From 529e92fc7da69ea5fce46507a32dcb7f1eb88aa1 Mon Sep 17 00:00:00 2001 From: Sashi20 Date: Fri, 11 Jul 2025 15:58:22 +0530 Subject: Files required for the Docker image --- composer.json | 119 + libraries/DOMPurify/.babelrc | 17 + libraries/DOMPurify/.editorconfig | 11 + libraries/DOMPurify/.github/FUNDING.yml | 1 + libraries/DOMPurify/.github/ISSUE_TEMPLATE.md | 23 + .../DOMPurify/.github/PULL_REQUEST_TEMPLATE.md | 22 + libraries/DOMPurify/.github/dependabot.yml | 6 + .../DOMPurify/.github/workflows/build-and-test.yml | 45 + .../.github/workflows/codeql-analysis.yml | 62 + libraries/DOMPurify/.gitignore | 9 + libraries/DOMPurify/.nvmrc | 1 + libraries/DOMPurify/.prettierignore | 0 libraries/DOMPurify/.prettierrc | 4 + libraries/DOMPurify/.settings/.gitignore | 5 + libraries/DOMPurify/dist/purify.cjs.d.ts | 401 ++ libraries/DOMPurify/dist/purify.cjs.js | 1343 ++++ libraries/DOMPurify/dist/purify.cjs.js.map | 1 + libraries/DOMPurify/dist/purify.es.d.mts | 399 ++ libraries/DOMPurify/dist/purify.es.mjs | 1341 ++++ libraries/DOMPurify/dist/purify.es.mjs.map | 1 + libraries/DOMPurify/dist/purify.js | 1349 ++++ libraries/DOMPurify/dist/purify.js.map | 1 + libraries/DOMPurify/dist/purify.min.js | 1349 ++++ libraries/DOMPurify/dist/purify.min.js.map | 1 + libraries/colorbox/LICENSE.md | 21 + libraries/colorbox/README.md | 620 ++ libraries/colorbox/bower.json | 40 + libraries/colorbox/colorbox.ai | 1811 ++++++ libraries/colorbox/content/ajax.html | 11 + libraries/colorbox/content/daisy.jpg | Bin 0 -> 101126 bytes libraries/colorbox/content/daisy@2x.jpg | Bin 0 -> 335898 bytes libraries/colorbox/content/homer.jpg | Bin 0 -> 8584 bytes libraries/colorbox/content/marylou.jpg | Bin 0 -> 52286 bytes libraries/colorbox/content/ohoopee1.jpg | Bin 0 -> 71685 bytes libraries/colorbox/content/ohoopee2.jpg | Bin 0 -> 111141 bytes libraries/colorbox/content/ohoopee3.jpg | Bin 0 -> 69240 bytes libraries/colorbox/example1/colorbox.css | 70 + libraries/colorbox/example1/images/border.png | Bin 0 -> 76 bytes libraries/colorbox/example1/images/controls.png | Bin 0 -> 1261 bytes libraries/colorbox/example1/images/loading.gif | Bin 0 -> 8685 bytes .../example1/images/loading_background.png | Bin 0 -> 131 bytes libraries/colorbox/example1/images/overlay.png | Bin 0 -> 115 bytes libraries/colorbox/example1/index.html | 95 + libraries/colorbox/example2/colorbox.css | 50 + libraries/colorbox/example2/images/controls.png | Bin 0 -> 503 bytes libraries/colorbox/example2/images/loading.gif | Bin 0 -> 6244 bytes libraries/colorbox/example2/index.html | 95 + libraries/colorbox/example3/colorbox.css | 45 + libraries/colorbox/example3/images/controls.png | Bin 0 -> 1633 bytes libraries/colorbox/example3/images/loading.gif | Bin 0 -> 6244 bytes libraries/colorbox/example3/index.html | 95 + libraries/colorbox/example4/colorbox.css | 66 + libraries/colorbox/example4/images/border1.png | Bin 0 -> 629 bytes libraries/colorbox/example4/images/border2.png | Bin 0 -> 112 bytes libraries/colorbox/example4/images/loading.gif | Bin 0 -> 6244 bytes libraries/colorbox/example4/index.html | 95 + libraries/colorbox/example5/colorbox.css | 58 + libraries/colorbox/example5/images/border.png | Bin 0 -> 139 bytes libraries/colorbox/example5/images/controls.png | Bin 0 -> 2027 bytes libraries/colorbox/example5/images/loading.gif | Bin 0 -> 8685 bytes .../example5/images/loading_background.png | Bin 0 -> 131 bytes libraries/colorbox/example5/index.html | 95 + libraries/colorbox/i18n/jquery.colorbox-ar.js | 15 + libraries/colorbox/i18n/jquery.colorbox-bg.js | 16 + libraries/colorbox/i18n/jquery.colorbox-bn.js | 16 + libraries/colorbox/i18n/jquery.colorbox-ca.js | 13 + libraries/colorbox/i18n/jquery.colorbox-cs.js | 16 + libraries/colorbox/i18n/jquery.colorbox-da.js | 16 + libraries/colorbox/i18n/jquery.colorbox-de.js | 15 + libraries/colorbox/i18n/jquery.colorbox-es.js | 13 + libraries/colorbox/i18n/jquery.colorbox-et.js | 15 + libraries/colorbox/i18n/jquery.colorbox-fa.js | 18 + libraries/colorbox/i18n/jquery.colorbox-fi.js | 15 + libraries/colorbox/i18n/jquery.colorbox-fr.js | 15 + libraries/colorbox/i18n/jquery.colorbox-gl.js | 13 + libraries/colorbox/i18n/jquery.colorbox-gr.js | 16 + libraries/colorbox/i18n/jquery.colorbox-he.js | 16 + libraries/colorbox/i18n/jquery.colorbox-hr.js | 15 + libraries/colorbox/i18n/jquery.colorbox-hu.js | 15 + libraries/colorbox/i18n/jquery.colorbox-id.js | 15 + libraries/colorbox/i18n/jquery.colorbox-it.js | 15 + libraries/colorbox/i18n/jquery.colorbox-ja.js | 15 + libraries/colorbox/i18n/jquery.colorbox-kr.js | 15 + libraries/colorbox/i18n/jquery.colorbox-lt.js | 15 + libraries/colorbox/i18n/jquery.colorbox-lv.js | 16 + libraries/colorbox/i18n/jquery.colorbox-my.js | 15 + libraries/colorbox/i18n/jquery.colorbox-nl.js | 15 + libraries/colorbox/i18n/jquery.colorbox-no.js | 16 + libraries/colorbox/i18n/jquery.colorbox-pl.js | 16 + libraries/colorbox/i18n/jquery.colorbox-pt-BR.js | 15 + libraries/colorbox/i18n/jquery.colorbox-ro.js | 15 + libraries/colorbox/i18n/jquery.colorbox-ru.js | 16 + libraries/colorbox/i18n/jquery.colorbox-si.js | 15 + libraries/colorbox/i18n/jquery.colorbox-sk.js | 15 + libraries/colorbox/i18n/jquery.colorbox-sr.js | 15 + libraries/colorbox/i18n/jquery.colorbox-sv.js | 15 + libraries/colorbox/i18n/jquery.colorbox-tk.js | 16 + libraries/colorbox/i18n/jquery.colorbox-tr.js | 19 + libraries/colorbox/i18n/jquery.colorbox-uk.js | 16 + libraries/colorbox/i18n/jquery.colorbox-vi.js | 16 + libraries/colorbox/i18n/jquery.colorbox-zh-CN.js | 15 + libraries/colorbox/i18n/jquery.colorbox-zh-TW.js | 15 + libraries/colorbox/jquery.colorbox-min.js | 6 + libraries/colorbox/jquery.colorbox.js | 1105 ++++ libraries/colorbox/package.json | 29 + libraries/drupal-superfish/.gitignore | 6 + libraries/drupal-superfish/CHANGELOG.MD | 63 + libraries/drupal-superfish/README.MD | 36 + libraries/drupal-superfish/VERSION | 1 + libraries/drupal-superfish/composer.json | 34 + libraries/drupal-superfish/css/superfish.css | 404 ++ .../jquery.hoverIntent.minified.js | 9 + libraries/drupal-superfish/sfsmallscreen.js | 337 + libraries/drupal-superfish/sftouchscreen.js | 128 + .../drupal-superfish/style/ABOUT_THIS_DIRECTORY.MD | 8 + libraries/drupal-superfish/style/THEMES.MD | 172 + libraries/drupal-superfish/style/THEMES_SCSS.MD | 269 + libraries/drupal-superfish/style/black/black.css | 145 + libraries/drupal-superfish/style/blue/blue.css | 144 + libraries/drupal-superfish/style/coffee/coffee.css | 145 + .../drupal-superfish/style/default/default.css | 137 + libraries/drupal-superfish/style/white/white.css | 144 + libraries/drupal-superfish/superfish.js | 122 + libraries/drupal-superfish/supersubs.js | 117 + libraries/drupal-superfish/supposition.js | 94 + libraries/easing/.editorconfig | 16 + libraries/easing/.eslintignore | 1 + libraries/easing/.eslintrc.js | 37 + libraries/easing/.gitignore | 1 + libraries/easing/LICENSE-BSD-3-Clause.txt | 85 + libraries/easing/README.md | 26 + libraries/easing/example/demo.html | 82 + libraries/easing/example/example.html | 56 + libraries/easing/example/verify.html | 77 + libraries/easing/jquery.easing.compatibility.js | 60 + libraries/easing/jquery.easing.js | 168 + libraries/easing/jquery.easing.min.js | 1 + libraries/easing/package-lock.json | 2535 ++++++++ libraries/easing/package.json | 48 + libraries/flexslider/flexslider.css | 280 + libraries/flexslider/jquery.flexslider-min.js | 5 + libraries/jquery.cycle/README.md | 12 + libraries/jquery.cycle/cycle.jquery.json | 34 + libraries/jquery.cycle/jquery.cycle.all.js | 1543 +++++ libraries/jquery.cycle/jquery.cycle.all.js.1 | 1543 +++++ libraries/jquery.cycle/jquery.cycle.all.js.2 | 1543 +++++ libraries/jquery.cycle/jquery.cycle.lite.js | 235 + libraries/jquery.hoverIntent/jquery.hoverIntent.js | 169 + .../libraries/jquery.cycle/jquery.cycle.all.js | 1543 +++++ libraries/jquery.pause/jquery.pause.js | 94 + libraries/json2/json2.js | 530 ++ libraries/owlcarousel2/dist/LICENSE | 23 + libraries/owlcarousel2/dist/README.md | 122 + libraries/owlcarousel2/dist/assets/ajax-loader.gif | Bin 0 -> 3208 bytes .../owlcarousel2/dist/assets/owl.carousel.css | 186 + .../owlcarousel2/dist/assets/owl.carousel.min.css | 6 + .../owlcarousel2/dist/assets/owl.theme.default.css | 50 + .../dist/assets/owl.theme.default.min.css | 6 + .../owlcarousel2/dist/assets/owl.theme.green.css | 50 + .../dist/assets/owl.theme.green.min.css | 6 + .../owlcarousel2/dist/assets/owl.video.play.png | Bin 0 -> 4976 bytes libraries/owlcarousel2/dist/owl.carousel.js | 3448 ++++++++++ libraries/owlcarousel2/dist/owl.carousel.min.js | 7 + libraries/slick/.gitignore | 2 + libraries/slick/CONTRIBUTING.markdown | 35 + libraries/slick/ISSUE_TEMPLATE.md | 50 + libraries/slick/LICENSE | 20 + libraries/slick/Makefile | 8 + libraries/slick/README.markdown | 294 + libraries/slick/bower.json | 32 + libraries/slick/component.json | 18 + libraries/slick/index.html | 373 ++ libraries/slick/package.json | 44 + libraries/slick/slick.jquery.json | 34 + libraries/slick/slick/ajax-loader.gif | Bin 0 -> 4178 bytes libraries/slick/slick/config.rb | 10 + libraries/slick/slick/fonts/slick.eot | Bin 0 -> 2048 bytes libraries/slick/slick/fonts/slick.svg | 14 + libraries/slick/slick/fonts/slick.ttf | Bin 0 -> 1892 bytes libraries/slick/slick/fonts/slick.woff | Bin 0 -> 1380 bytes libraries/slick/slick/slick-theme.css | 204 + libraries/slick/slick/slick-theme.less | 168 + libraries/slick/slick/slick-theme.scss | 194 + libraries/slick/slick/slick.css | 119 + libraries/slick/slick/slick.js | 3004 +++++++++ libraries/slick/slick/slick.less | 100 + libraries/slick/slick/slick.min.js | 1 + libraries/slick/slick/slick.scss | 100 + libraries/superfish/CHANGELOG | 63 + libraries/superfish/README | 37 + libraries/superfish/VERSION | 1 + libraries/superfish/composer.json | 18 + libraries/superfish/css/superfish.css | 404 ++ libraries/superfish/jquery.hoverIntent.minified.js | 9 + libraries/superfish/sfsmallscreen.js | 337 + libraries/superfish/sftouchscreen.js | 128 + libraries/superfish/style/ABOUT_THIS_DIRECTORY.txt | 9 + libraries/superfish/style/THEMES.txt | 170 + libraries/superfish/style/THEMES_SCSS.txt | 267 + libraries/superfish/style/black/black.css | 145 + libraries/superfish/style/blue/blue.css | 144 + libraries/superfish/style/coffee/coffee.css | 145 + libraries/superfish/style/default/default.css | 137 + libraries/superfish/style/white/white.css | 144 + libraries/superfish/superfish.js | 122 + libraries/superfish/supersubs.js | 117 + libraries/superfish/supposition.js | 94 + sites/default/files/.htaccess | 14 + sites/default/files/2024-10/slide-image-4.png | Bin 0 -> 46911 bytes sites/default/files/2024-10/slide-image-5.png | Bin 0 -> 231448 bytes sites/default/files/2024-10/slide-image-7.png | Bin 0 -> 41094 bytes sites/default/files/AoC_Auto Street Light(1).png | Bin 0 -> 71352 bytes sites/default/files/AoC_Auto Street Light(2).gif | Bin 0 -> 210515 bytes sites/default/files/AoC_Auto Street Light(3).png | Bin 0 -> 47451 bytes sites/default/files/AoC_Blink LED(1).jpeg | Bin 0 -> 13037 bytes sites/default/files/AoC_Blink LED(2).png | Bin 0 -> 55188 bytes sites/default/files/AoC_Blink LED(3).gif | Bin 0 -> 84807 bytes .../files/AoC_Control LED using Relay(2).png | Bin 0 -> 67299 bytes .../files/AoC_Control LED with Relay(1).gif | Bin 0 -> 86320 bytes .../files/AoC_Control LED with Relay(3).gif | Bin 0 -> 109412 bytes sites/default/files/AoC_Electronic Dice (2).png | Bin 0 -> 87744 bytes sites/default/files/AoC_Electronic Dice(1).png | Bin 0 -> 104892 bytes sites/default/files/AoC_Electronic Dice(3).gif | Bin 0 -> 105042 bytes sites/default/files/AoC_Gas Sensor(1).jpg | Bin 0 -> 11746 bytes sites/default/files/AoC_Gas Sensor(4).png | Bin 0 -> 43417 bytes sites/default/files/AoC_Gas senrsor(3).png | Bin 0 -> 74201 bytes sites/default/files/AoC_Gas sensor(2).png | Bin 0 -> 171326 bytes sites/default/files/AoC_Intruder sensor(1).png | Bin 0 -> 301593 bytes sites/default/files/AoC_Intruder sensor(2).png | Bin 0 -> 33385 bytes sites/default/files/AoC_Intruder sensor(3).gif | Bin 0 -> 186992 bytes sites/default/files/AoC_LCD ScrollingText(1).gif | Bin 0 -> 292571 bytes sites/default/files/AoC_LCD ScrollingText(2).png | Bin 0 -> 116071 bytes sites/default/files/AoC_LCD ScrollingText(3).gif | Bin 0 -> 284129 bytes sites/default/files/AoC_LED Control Button(1).jpg | Bin 0 -> 47670 bytes sites/default/files/AoC_LED Control Button(2).gif | Bin 0 -> 35553 bytes sites/default/files/AoC_LED Control Button(3).png | Bin 0 -> 56319 bytes sites/default/files/AoC_LED Control Button(4).gif | Bin 0 -> 303346 bytes .../files/AoC_Motion senosr with alarm (4).gif | Bin 0 -> 139005 bytes .../files/AoC_Motion sensor with Alarm (2).gif | Bin 0 -> 33718 bytes .../files/AoC_Motion sensor with Alarm (3).png | Bin 0 -> 41689 bytes .../files/AoC_Motion sensor with Alarm (5).png | Bin 0 -> 85090 bytes .../files/AoC_Motion sensor with alarm(1).jpg | Bin 0 -> 3651 bytes sites/default/files/AoC_RGB Temp Indicator(1).jpg | Bin 0 -> 33277 bytes sites/default/files/AoC_RGB Temp Indicator(2).jpg | Bin 0 -> 116429 bytes sites/default/files/AoC_RGB Temp Indicator(3).png | Bin 0 -> 57962 bytes sites/default/files/AoC_RGB Temp Indicator(4).gif | Bin 0 -> 454388 bytes sites/default/files/AoC_Servo Motor(2).gif | Bin 0 -> 2282129 bytes sites/default/files/AoC_Servo Motor(3).png | Bin 0 -> 77631 bytes sites/default/files/AoC_Servo Motor(4).gif | Bin 0 -> 354895 bytes .../files/AoC_Therimstor Temp Display(4).gif | Bin 0 -> 129468 bytes .../files/AoC_Thermistor Temp Display(1).png | Bin 0 -> 15856 bytes .../files/AoC_Thermistor Temp Display(2).gif | Bin 0 -> 75870 bytes .../files/AoC_Thermistor temp Display(3).png | Bin 0 -> 143714 bytes sites/default/files/AoC_servo motor(1).jpeg | Bin 0 -> 53237 bytes .../Arduino on Cloud_Up and Down Counter(1).png | Bin 0 -> 79561 bytes .../Arduino on Cloud_Up and Down Counter(2).png | Bin 0 -> 33765 bytes .../files/Arduino on Cloud_Up and Down Counter.gif | Bin 0 -> 146142 bytes sites/default/files/Blink_1.png | Bin 0 -> 45802 bytes sites/default/files/Blink_2.png | Bin 0 -> 25971 bytes sites/default/files/Blink_3.png | Bin 0 -> 47007 bytes sites/default/files/Blink_4.png | Bin 0 -> 17928 bytes sites/default/files/Blink_5.png | Bin 0 -> 23604 bytes sites/default/files/Blink_6.png | Bin 0 -> 25627 bytes sites/default/files/Blink_7.png | Bin 0 -> 29391 bytes sites/default/files/E_Blink of LED.jpg | Bin 0 -> 13037 bytes sites/default/files/E_Blink of LED_1.png | Bin 0 -> 53256 bytes sites/default/files/E_Blink of LED_7.gif | Bin 0 -> 127995 bytes sites/default/files/E_Control LED.jpg | Bin 0 -> 47670 bytes sites/default/files/E_Control LED_1.gif | Bin 0 -> 35553 bytes sites/default/files/E_Intruder.png | Bin 0 -> 301593 bytes sites/default/files/E_Intruder_1.png | Bin 0 -> 51768 bytes sites/default/files/E_Intruder_2.png | Bin 0 -> 55118 bytes sites/default/files/E_Intruder_3.png | Bin 0 -> 65379 bytes sites/default/files/E_Intruder_4.png | Bin 0 -> 49477 bytes sites/default/files/E_Intruder_5.gif | Bin 0 -> 48672 bytes sites/default/files/E_LCD 2.png | Bin 0 -> 32757 bytes sites/default/files/E_LCD 3.png | Bin 0 -> 32757 bytes sites/default/files/E_LCD.gif | Bin 0 -> 292571 bytes sites/default/files/E_LCD_1.png | Bin 0 -> 58267 bytes sites/default/files/E_LCD_2.png | Bin 0 -> 97466 bytes sites/default/files/E_LCD_4.png | Bin 0 -> 36673 bytes sites/default/files/E_LCD_5.gif | Bin 0 -> 56994 bytes sites/default/files/E_Servo.gif | Bin 0 -> 2282129 bytes sites/default/files/E_Servo_1.jpg | Bin 0 -> 116429 bytes sites/default/files/E_Servo_2.png | Bin 0 -> 46356 bytes sites/default/files/E_Servo_3.png | Bin 0 -> 93923 bytes sites/default/files/E_Servo_4.png | Bin 0 -> 43266 bytes sites/default/files/E_Servo_5.png | Bin 0 -> 34060 bytes sites/default/files/E_Servo_6.png | Bin 0 -> 60518 bytes sites/default/files/E_Servo_7.gif | Bin 0 -> 90145 bytes sites/default/files/E_Temp.jpg | Bin 0 -> 33277 bytes sites/default/files/E_Temp_1.png | Bin 0 -> 63964 bytes sites/default/files/E_Temp_2.png | Bin 0 -> 53185 bytes sites/default/files/E_Temp_3.png | Bin 0 -> 60135 bytes sites/default/files/LED_Pushbutton_1.png | Bin 0 -> 39710 bytes sites/default/files/LED_Pushbutton_10.png | Bin 0 -> 39039 bytes sites/default/files/LED_Pushbutton_11.png | Bin 0 -> 44980 bytes sites/default/files/LED_Pushbutton_12.png | Bin 0 -> 44344 bytes sites/default/files/LED_Pushbutton_13.png | Bin 0 -> 46164 bytes sites/default/files/LED_Pushbutton_14.gif | Bin 0 -> 9760807 bytes sites/default/files/LED_Pushbutton_2.png | Bin 0 -> 25701 bytes sites/default/files/LED_Pushbutton_3.png | Bin 0 -> 37940 bytes sites/default/files/LED_Pushbutton_4.png | Bin 0 -> 27244 bytes sites/default/files/LED_Pushbutton_5.png | Bin 0 -> 48657 bytes sites/default/files/LED_Pushbutton_6.png | Bin 0 -> 48541 bytes sites/default/files/LED_Pushbutton_7.png | Bin 0 -> 88550 bytes sites/default/files/LED_Pushbutton_8.png | Bin 0 -> 35789 bytes sites/default/files/LED_Pushbutton_9.png | Bin 0 -> 49029 bytes sites/default/files/SC_logo.png | Bin 0 -> 33001 bytes sites/default/files/SC_logo1.png | Bin 0 -> 8320 bytes sites/default/files/SC_logo1_0.png | Bin 0 -> 8320 bytes sites/default/files/advagg_in3idD6G | 0 sites/default/files/advagg_inJESXzK | 0 sites/default/files/advagg_inj3JTS2 | 0 sites/default/files/advagg_inlDQuaI | 0 sites/default/files/advagg_out3EBzd9 | 0 sites/default/files/advagg_outKuagXq | 0 sites/default/files/advagg_outgWWAKP | 0 sites/default/files/advagg_outrwR7NB | 0 .../files/color/responsive-4816eefb/colors.css | 46 + .../files/color/responsive-4816eefb/logo.png | Bin 0 -> 9413 bytes .../sync/.htaccess | 23 + .../sync/README.txt | 1 + sites/default/files/favicon.ico | Bin 0 -> 1276 bytes sites/default/files/fevicon.png | Bin 0 -> 1276 bytes sites/default/files/fevicon1.png | Bin 0 -> 533 bytes sites/default/files/fevicon_1.png | Bin 0 -> 1276 bytes sites/default/files/fevicon_1_0.png | Bin 0 -> 1276 bytes sites/default/files/fossee_logo.png | Bin 0 -> 19335 bytes sites/default/files/gas sesnor.gif | Bin 0 -> 13382087 bytes .../files/google_tag/google_tag.data_layer.js | 1 + .../files/google_tag/google_tag.noscript.js | 1 + .../default/files/google_tag/google_tag.script.js | 1 + sites/default/files/left-img.png | Bin 0 -> 66624 bytes sites/default/files/logo-floss-arduino-web.png | Bin 0 -> 5547 bytes sites/default/files/logo-floss-arduino-web_0.png | Bin 0 -> 3975 bytes sites/default/files/logo-floss-arduino-web_1.png | Bin 0 -> 3975 bytes sites/default/files/logo-floss-arduino-web_1_2.png | Bin 0 -> 3975 bytes sites/default/files/logo.png | Bin 0 -> 3975 bytes sites/default/files/ohw-logo-website.png | Bin 0 -> 6521 bytes sites/default/files/openplc_logo.png | Bin 0 -> 4130 bytes sites/default/files/php/twig/.htaccess | 24 + .../.htaccess | 24 + ...nlreqouoJPBD-By-iCjG8k0xLth19m0xvFBh7rnFHfw.php | 151 + .../.htaccess | 24 + ...lVkrIZKSaes7BzvgYBQyozI1wQHU_EaCCtKUGXeHHl8.php | 243 + .../.htaccess | 24 + ...paYjvO4dwHzHHBGdcQpNPfWMVNCDbAQStCGnpYkU99w.php | 272 + .../.htaccess | 24 + ...bkFeU2j_02ju_mwa5BDCijxl-qdl-5-o1P2Y_IXjdGY.php | 180 + .../.htaccess | 24 + ...ImcpACEsACDKdEHhlFIuEiYMhnwZtM3SNABRdpnDVQU.php | 149 + .../.htaccess | 24 + ...dJFryDnCSMlzxCDnLARFKS6TrBNq02_YPqLTUXvGXUk.php | 143 + .../.htaccess | 24 + ...xwx8kl0jpZ9VPRiv8uGLtxqTNFBp2LICGO97dIlxEGE.php | 169 + .../.htaccess | 24 + ...1o3cQNnDz7Nyhrs9TPckO-is8xy3bzbz_BqCi5AdQEs.php | 129 + .../.htaccess | 24 + ...7baO-c0TgqEghW7diU-8n1r-NL4k5vQTEIgERV-fT2Y.php | 188 + .../.htaccess | 24 + ...Knvxq_A08KolTRnLYLg7AKoIQq62xEuJF9LFIBSePBo.php | 141 + .../.htaccess | 24 + ...N0tbidQJF8RzwZ5_a2SoNHDM1B6mN1uLGUB8g5XXY-c.php | 153 + .../.htaccess | 24 + ...msrkCJeon7KBOL7x3AwB5X-vrWFEYq3YC3OK0szPKm8.php | 115 + .../.htaccess | 24 + ...SD7MMjZKAONB55NzUEkVl0QPOQQGtKysh6RCv1jaE20.php | 137 + .../.htaccess | 24 + ...ah-LRtnR6f3i_i6EDwII33eb8vqLp66aMFv-8MkxfwI.php | 129 + .../.htaccess | 24 + ...c7s1ZXeE-4BqBDY5uPsHwbQUtZqArWtmUSC2arbSROw.php | 193 + .../.htaccess | 24 + ...yKoB86X5UyJpXTDDY9tkf16dW3UKICXR4pv8FX8b1lE.php | 193 + .../.htaccess | 24 + ...j95BvAbXYx8dpkgy7WZIgZ6enRWRELrY0QEpvEE-rvs.php | 169 + .../.htaccess | 24 + ...y56jEpt3QLdXAgd2He6F7Bzj58rYYS11sheAPO7h0cs.php | 119 + .../.htaccess | 24 + ...XfB_iQ4Z_KhUq8r8QwaXgMcHRAv_VJ5_ctCxaclo5pc.php | 158 + .../.htaccess | 24 + ...iaqJX_bYPmjZlS1h4AJ1BMDHzslcAkexJ83OMw2UjpA.php | 144 + .../.htaccess | 24 + ...745z83OPeUJ3DBEWNlHh5U-HE-qqkOtuWut8ksh2AJ4.php | 146 + .../.htaccess | 24 + ...ZKptziiAidJJblGyx-5resy_lhLyp9l2hOz1pB_sIgQ.php | 136 + .../.htaccess | 24 + ...rp1R8ICUzjTcCj7zPJO6AQJLz5PILLjv3uvo-8oa8WA.php | 185 + .../.htaccess | 24 + ...s_obThe2h3SvCxMhh-OLhyfRxGNn2CiPSx2zf9-K7Q0.php | 161 + .../.htaccess | 24 + ...DLJ2mJ7XFvP2chI3SflyDbScfUut1ydtuR-Mxloq34Y.php | 141 + .../.htaccess | 24 + ...CMn2XE-IRH7rUYQpQLHtIfi-hyZ7PU5oFNEcmY0KogA.php | 156 + .../.htaccess | 24 + ...1aKQjdRmX8EK1EozM1lmuErHOPW4R7fmRdMRc1OeCCM.php | 140 + .../.htaccess | 24 + ...l_vpWuL2L82MnaVzvpIXPo4r9fczZjwGOBXNdE5b2E0.php | 135 + ...-bja31iJ-d92BrAcjomaGEmR7SYPd0BxzDSZRTn4qco.php | 136 + .../.htaccess | 24 + .../.htaccess | 24 + ...0e0UpcB6ot2JRRjKSJ7kj4iDalnSqVCUrHv3xFj7WFM.php | 204 + .../.htaccess | 24 + ...FUcFhwuT9FgINNxm-_eWXQRTZVD6DKZQH70F1hBYvw8.php | 144 + .../.htaccess | 24 + ...NYQijdQk2kuEgf3yqgnepBBgaoc8W02udr8BtMQPj4I.php | 195 + .../.htaccess | 24 + ...OR4pyZhqPNomW3psFxv7gcujRqtg4GLh5PXDpKMUQlA.php | 146 + .../.htaccess | 24 + ...mpzff6ATSzH8mlXaM2J29wWgdwPHDNZuRZDyFcOBkaI.php | 167 + .../.htaccess | 24 + ...DKeE0Wler1jSnLiTyzT21ib2SFTpewhsmMgLR_J-u1g.php | 148 + .../.htaccess | 24 + ..._DtGKHLRwmWm7DDGsOV3orP4ilp9qvNzj795nygdncA.php | 164 + .../.htaccess | 24 + ...4j-t7bgJ2QEqxp1UCx3UyxNU7hIpx_qtRhcbiuaq7M8.php | 106 + .../.htaccess | 24 + ...vrfQQBQ-9U8Vw88CWdR_ah2z8mEBQQTIwPVoV_gIgEw.php | 108 + .../.htaccess | 24 + ...4P8UerSv--By5yXkCDiUNODkim8ufW3pXHMlA2JFE5s.php | 151 + .../.htaccess | 24 + ..._rHB9quny1QhtrRjU0BKfYLdmw4o5gTdCtpDakURUZI.php | 108 + .../.htaccess | 24 + ...EwT21syPY2FAFC1LRRJRCw4Dx29Qp3eDSLc2kOqZqHQ.php | 153 + .../.htaccess | 24 + ...tFQfu6zRTduaZlyGi4WZejRZqlj7j7ywElIvs-jPb0o.php | 149 + .../.htaccess | 24 + ...Bs9U2n47O6mPO6erdD1dsu17rTx9CRmbBVDwHuWxPo4.php | 115 + .../.htaccess | 24 + ...RgPw1d0MRl4J7k5TAAd3Bf91YwHfv4msOG_IE8wYeD8.php | 119 + .../.htaccess | 24 + ...6zWSmzPZBmgbF2OzGVZRpXq7kdKyMTJORuBAeOPlbjc.php | 203 + .../.htaccess | 24 + ...5UWpirjEJ3vc4uqh3U2bu5h1TfIK5bjuwNyuQ3eJOJY.php | 114 + .../.htaccess | 24 + ...BHWLD5IbJOQmWKAKxiQxKLbLlL0yg1ajvSJpvrL9gLQ.php | 111 + .../.htaccess | 24 + ...Pn4zckaSKE1JnFo9874BPtMg6Osv1Dw4m8tBqp7xOGQ.php | 165 + .../.htaccess | 24 + ...c8YRSj695AOtcnvy6N-QU7TxPiGg-73WNDlzPb3ACWA.php | 191 + .../.htaccess | 24 + ...lql_oMLT1lc1Q5QP--DXJ_y2yRs_phvpSdislav_8i0.php | 115 + .../.htaccess | 24 + ...3evZv3KwXtZCh3sy2sGT8mqwmaBqSqPKU5zIXUPN0rs.php | 122 + .../.htaccess | 24 + ...GYn0jyN5X0XkbRL80JKvLiAb3WccV0Ae6Wt14mCZwJQ.php | 149 + .../.htaccess | 24 + ...YOxkvqL_7-xchgiq9BRCz_D362__lhMrlO84mwB4zrs.php | 120 + .../.htaccess | 24 + ...cnlbFGoQBYCiU3itFGQ0paesYl_wQGGnGjZzSdEKqXY.php | 182 + .../.htaccess | 24 + ...lIEgTOsNr03WsxQZ0ENbOenxl4pe_EaSuRkKZE8VQyU.php | 122 + .../.htaccess | 24 + ...tiNmvxJL7uC3315eT9bF9fhNvlHxP1qgdVi_fuvHDwg.php | 106 + .../.htaccess | 24 + ...Oz-evidk2syLGp42N6jdvgsXrOGDkYQif4UWJZ52LcM.php | 164 + .../.htaccess | 24 + ...32dp9Ifceg2XVGbvERG-ZVDXRjUNIPywGijPTuSZhUE.php | 161 + .../.htaccess | 24 + ...oThCq02pYfhPnukcbNXty4Ili8skmYnTObHE1xNwkyU.php | 250 + .../.htaccess | 24 + ...hCvKs6h1owpcrvDNux97_EZs4wwOgX5A_WQzm3__ppY.php | 106 + .../.htaccess | 24 + ...mPhr3vEwVczKiyWjpr1DoVcpyIIBDGoqaeTBRSG7qw8.php | 107 + .../.htaccess | 24 + ...YCDkCjQ9SDjxtAzCg_o0jDfIlE6Xi4p8tD_XViI7Fw0.php | 106 + .../.htaccess | 24 + ...le9e0hEkUJVIxWamAs92jlFetu-LN3YPsL3zDRTfon4.php | 135 + .../.htaccess | 24 + ...WI8SKLWisBxPWRD8q1JbYA3td4tpu-55s1Q0xG5h04o.php | 138 + .../.htaccess | 24 + ...Y0S5-Wh7bihK5mO7-tLrIR7YbJqtQ-m7jemExMcN8w4.php | 142 + .../.htaccess | 24 + ...k3WrWIT59uC-Ci_jrv6RiPng2WhM485LQ5FYfdfLUFE.php | 108 + .../.htaccess | 24 + ...5A0FKYN-xA7h-6L72Vy7WNdctcfZWtwLGsfbzWniuww.php | 132 + .../.htaccess | 24 + ...rjEGBSvyUbtTq0tJS13_R-yT8k7CqGPpPLh7uyJhtg4.php | 134 + .../.htaccess | 24 + ...ZXLn9smIZ0uP5yzKC-jZRz-_tuKjngmZQQ39YIZU_Js.php | 145 + .../.htaccess | 24 + ...6l56trDj-UKnA_KgcQTGE5u_Pl2LS1xBocnsNEN4TsY.php | 160 + .../.htaccess | 24 + ...RIY28buMcTngNFPiO8Kk-CadchiA3_HkQmeX8lL8fok.php | 108 + .../.htaccess | 24 + ...Mqkyp0u7q50X5kySaha4AeNk7xSujJv0W3YpIe6Nlw0.php | 171 + .../.htaccess | 24 + ..._fdtwWAFmxx6RU3fwSxP78x2IA_OvR79A8P7bV-eTp4.php | 153 + .../.htaccess | 24 + ...dCRtNWRjolk2I67IDp6OY3O3P9wB4miPKUS1bovXJp4.php | 149 + .../.htaccess | 24 + ...dpAMKrgHktxQoP1jqfvbjHFaZwfnjcZHD_Saq92J9To.php | 153 + .../.htaccess | 24 + ...rhQ5Cms5buBOxLouxCzCmPpEYV84mlQYemNcMumuOFI.php | 151 + .../.htaccess | 24 + ...Eq6Jm9L8ErR2mq99EsiOGzKIUpv1OzSzWvIMvgjPpac.php | 144 + .../.htaccess | 24 + ...TptPA8hPXtXIEfgYhstCa7JxVYOD-FQxEwW9PBh8lV8.php | 148 + .../.htaccess | 24 + ..._CgpCFVgD4hGH_mNb7s9eSG47N8wjDbHdRef-Zkcths.php | 179 + .../.htaccess | 24 + ...J5TbvngT4WyV-waM7UpNpJo4po1lkQy-zupgSrvgZgs.php | 146 + .../.htaccess | 24 + ...royCNc1EtDv1znsO2T6bDFsNyrzU5pbRsx3WViJxbuY.php | 140 + .../.htaccess | 24 + ...xKpZhTi8SZJ9ufU2I5cb-WRyJbvTyaQvh6RcmUA9Uwo.php | 133 + .../.htaccess | 24 + ...ykiRhO7K4aJGMDjNxi6Y3_eC8deL7q3Co6tK9gvFpOg.php | 144 + .../.htaccess | 24 + ...ZUmEqZUYO_jBLDtckgR3xHQgyw8I52KMsiibuaPnbHg.php | 149 + .../.htaccess | 24 + ..._CJMaL21aLwiuXu84ZhZKS1izcWD0dqcpoGOxbc8Yi8.php | 149 + .../.htaccess | 24 + ...vS3N0N9xVyXpEK66RprbPS-HxHOv-A3m96G4Ms7g7oc.php | 158 + .../.htaccess | 24 + ...SGHH_H8KwBWGBN6TBEj7Uf2I4tuI3lGsdBYJX4Qdkdg.php | 201 + .../.htaccess | 24 + ...fPqksBOmy8oRVUyu3CMlh7tACvxIjfykm8iBulXcXVU.php | 171 + .../.htaccess | 24 + ...g2VfQnHG3withbPJmoSd0XYQfl1cS0cxrxcC_txJ-K8.php | 164 + .../.htaccess | 24 + ...ZzDhhWhYkBMeokPdbR8s8XBfvI8-UqDjaq9c_VLwJuY.php | 178 + .../.htaccess | 24 + ...33mO3ZvL9mK7FSXZD3uwjrnXwdQkjF9CsoCoZWP0vqs.php | 161 + .../.htaccess | 24 + ...YkrWUkUyG1h-y7yD_G2qM6VA-4pqYhoWvDJAvSFxBfA.php | 134 + .../.htaccess | 24 + ...z2kf7EosFx_jCMUBRiWXWUX2qBPc2wsXdFXO1S95QQw.php | 143 + .../.htaccess | 24 + ...OA2XK9so5qLNrmgXIywZrtpX7um4pz9FJc5oYUDBW_0.php | 144 + .../.htaccess | 24 + ...QZ_ZTGOXTyksxIGhYJeJHAnmJB3ATPuDW0VRQJL1RoA.php | 148 + .../.htaccess | 24 + ...iHx7Lx3-tj0zn7lbQ_nIRmV9YTdT53qj3hnWTIKvkB4.php | 144 + .../.htaccess | 24 + ..._2WHcBrwH3NKod9obcOlbCULxaxo5JQ4zHq3iC0ppfs.php | 161 + .../.htaccess | 24 + ...gb-zK1AHQfCSCllfDPvMSyIDbC7yjJg4ul62An4Aoy0.php | 146 + .../.htaccess | 24 + ...BkL_DhpZimm4FIptfsJJ3VRG2yMUOCFnAAgBxHsoHV0.php | 127 + .../.htaccess | 24 + ...1x6SnnSLmCFscGmCZishbxkZRC8gmEJVsSwBuk4hLF0.php | 143 + .../.htaccess | 24 + ...r4wdv4dj4uZcwJVIl58XhMU0froS4oFZjUlyfck12Tg.php | 115 + .../.htaccess | 24 + ...T4X3JODKxReD7jN6r5JoQa_ioaHeIDb25a-rxgi-C1w.php | 149 + .../.htaccess | 24 + ...paCfHX60uziLUynakApnjcvOm13baUOUEVESM9zzjWA.php | 151 + .../.htaccess | 24 + ...GxUnY4_v0EuWy3YkEQzEIH9EOwXml2AetZMRFVDe1hA.php | 243 + .../.htaccess | 24 + ...hPNArAsxRCX5ARow2dxYWSweI4fUEftcTCenJhFLaWg.php | 272 + .../.htaccess | 24 + ...IJtwF3XetUKbMDrwDxH0VmS9B7K7LnM4IEpmIBSA9bY.php | 180 + .../.htaccess | 24 + ...XP87v0OK7J8wEZEp3GuJWs4l3w0kmjGtbTybt5Hr0BM.php | 149 + .../.htaccess | 24 + ...stC5pAY5snOcCNpdlm9-keXg18mR9poO9XPOpJIKZJQ.php | 143 + .../.htaccess | 24 + ...twEcUclaxwtpfJ4mLyiPjWVklLM92jtlry2tsKauthU.php | 169 + .../.htaccess | 24 + ...rjmcQLydPbBwZ70qTSADN-1Ygf3mZVUlzEXKcaqZios.php | 129 + .../.htaccess | 24 + ...mGLm59gZiQfJivZknTNuLSYcdjQWii_33FMOiXNwFLU.php | 188 + .../.htaccess | 24 + ...yuuEjfOf5HgSPmpnwCeYwx61v3cBWxZeFsIVxHZn7QU.php | 141 + .../.htaccess | 24 + ...wQv1jVU5C2q87wmTXXcBvO3k8bsqtaR6sl5-DdxYRwA.php | 153 + .../.htaccess | 24 + ...JzbBtH6rHmyjlYfuunhtQFwX9UqaS4PvAOcVdnuhkr8.php | 115 + .../.htaccess | 24 + ...B_ahhv5ztr2CxJyAGVyea3UZdkZ9Pad_B2AvRLs8D6Y.php | 137 + .../.htaccess | 24 + ...o-NvoykG0wh_njDDk5vOGVpIuEdvbO2Tgj-bn9CNIR0.php | 129 + .../.htaccess | 24 + ...mAVQ-8UDS56qxWRV2Ni9e26qNtQeFC21TpPSQQq6a_k.php | 193 + .../.htaccess | 24 + ...oiLlyZXqOA5Jnjmn_LtAV8Dpf_-PMZqLMr6_w8EMKh4.php | 193 + .../.htaccess | 24 + ...rP0oAKSGeWmz3pDWffSljQH5D2fIkavs1WBySJYfqbU.php | 114 + .../.htaccess | 24 + ...a2ByIZGfrn1NG6tuYXAn-kJmgFFG2BruDgGWDipPRn4.php | 146 + .../.htaccess | 24 + ...4jLVM_9-I5saZLb662_7lHzv8nQuNd243kQHzzLESvM.php | 159 + .../.htaccess | 24 + ...As5UZEu7UEBb82UDYPpuPN0nvs4Fv1WZzUTIYYkpeqg.php | 124 + .../.htaccess | 24 + ...b8uYz16dGJcOgmcby8NnAVSP05h90YY3cIgNQXJl2Ak.php | 162 + .../.htaccess | 24 + ...qWf24rXZw0gU_K-VUg4BVyV_uTifbAJj-DsLLuK3G38.php | 153 + .../.htaccess | 24 + ...APWfPCUKr_XPxysyvXAV1XFwBZHwRwg9qh5_EjYtk4w.php | 131 + .../.htaccess | 24 + ...fc4Go7ZDaGtUQaaz15ePRJ4B3e_UPuwCsUOpkjZpJY4.php | 131 + .../.htaccess | 24 + ...aoSpFWm8Vni0A6dCN8Q5H-uD-H6OPxpTNPCgC1ftoFo.php | 131 + .../.htaccess | 24 + ...5vlEhybIwfBE9_9Tm4uQ037TsgrYmr662SFOXkR1j50.php | 205 + .../.htaccess | 24 + ...CRr_1eUgReEageBBzhEcHI6yk_35WkoFanXZmn614mQ.php | 162 + .../.htaccess | 24 + ...0t0_YRO1R0BVgkK7qhZ6rFKgSOdccubL7be6ItShQLk.php | 162 + .../.htaccess | 24 + ...Ft_RrguYAUg-b1Q7RCGlGX5Zgg6pDrgMulag2cVwVFo.php | 158 + .../.htaccess | 24 + ...8lA1JPh6LrEj5jX4gRiteXyK3g8cjuBacbn-rXzO4H4.php | 166 + .../.htaccess | 24 + ...dN4UtWL-8SfMVlQF1fk6ZbxCb6Rzxr0xCeAnLfCb9ZE.php | 189 + .../.htaccess | 24 + ...6Ejg3lvqufxY_-Ogad0Y0sua464mYP7vCZnPzyuBxbw.php | 218 + .../.htaccess | 24 + ...0K9X_GEeKJnkLoaKpe7xbp5uOghbeDMtygIY4qdL7tI.php | 125 + .../.htaccess | 24 + ...rD2nQuOpXEyaZVqAaXj-cT-Fejb9_F5zFyP91EWJH0k.php | 119 + .../.htaccess | 24 + ...Tvxa6WlHJCHGodQyv5-ETuYG_9PYKFTuNnLb1z7BQpY.php | 116 + ...-zHGLK90AApgWCQtKtAgebye8bE2snyMWYfWueptZtk.php | 116 + .../.htaccess | 24 + ...-6U3bRvSy2vrKAxoLfxBDYDPvRsBHrpXVXhCPPJJJac.php | 119 + .../.htaccess | 24 + .../.htaccess | 24 + ...BhFnf_o6ftR2u2WecPL9cUZUojIZQ_R07PO18oiELnY.php | 119 + .../.htaccess | 24 + ...yRtFTCDoyEfffYb2L2YWgh-zTPPkgTZ3xW1e7omtrs0.php | 203 + .../.htaccess | 24 + ...jrxVFFEy9To6SZZpdWE-utRd_6pSmiMrd02vdjFFHGU.php | 202 + .../.htaccess | 24 + ...xqT_8lvnztXIVCrSxaiFX41NmmUGabcuO3cfArFgP9w.php | 114 + .../.htaccess | 24 + ...PZntAIdjbVSHMbYy_D8a9QiG-fXiCG4XOJjGHn8yO_M.php | 167 + .../.htaccess | 24 + ...mwF4H3VAX9MJK9goBLaneG_soai6j2G7eek0c2t9d-c.php | 169 + .../.htaccess | 24 + ...piaQmyNHQ9iZOao3cWBBLFmMJT-QPNxHFr9bH4mSZjQ.php | 119 + .../.htaccess | 24 + ...3s-BvrqR7brg3vlGxxMIjTbuYF-v8ZIyTi5ShtJ4yGU.php | 165 + .../.htaccess | 24 + ...RSwTzYWdLycoSCK3NCDETBdOfuldvy6oT9eFEJ0jp1w.php | 163 + .../.htaccess | 24 + ...lOfrSdKIVCEcKRlXfrL4-wS-nzJYGITCC7rqPAQfwqA.php | 118 + .../.htaccess | 24 + ...upaPWeYIOj7CqSteOdQbu_8zb8-gbeoNJYC09QF4Gvg.php | 128 + .../.htaccess | 24 + ...AtXkX1kA4l8cH0OZomIYbci4MDRdhB4ikSysADAbudg.php | 193 + .../.htaccess | 24 + ...GqqSk_CvJlqsXg186qdS9rcAblp9SurbNqKq5F0szko.php | 108 + .../.htaccess | 24 + ...E8W6iMOMUnkLP4q-A6fRLDLgBi-xk7nxLudfjVuqc8E.php | 109 + .../.htaccess | 24 + ...Ik72ai1ujNr5dFwFjt97KKueXQiYYcrZ1yv4wkWIfps.php | 112 + .../.htaccess | 24 + ...5ICZHgS08mbKunvL6vIhD3WbE3KXkDjjXblt7nqVGMA.php | 158 + .../.htaccess | 24 + ...Eyot0VNpMyxxjiPVhOMNLvEJ0pVGF4Zt2NuXh3dUDzY.php | 111 + .../.htaccess | 24 + ...o6BKfXwb1c3EM4hbd35bqNEbfpc1UPa-fkuOyUrs2u8.php | 156 + .../.htaccess | 24 + ...OAj4em-aH0dcu7hc0yzOKQdW5jBAm5-kAL45GbZnjUg.php | 165 + .../.htaccess | 24 + ...3qcWnqYdQzfMFhpo5Gvxoqq87RSQ8agL4yZxynIxId8.php | 225 + .../.htaccess | 24 + ...DGlmfd1eLU3qLRUG7SCuTmoh4h0mNLZ4-VTFPICyvjY.php | 168 + .../.htaccess | 24 + ...tUo8O43tInav5zDJ_ZL-OngqVcZY4euxEPDY_zYP7UE.php | 191 + .../.htaccess | 24 + ...Jq968Sp8_FeXWXHOv5wDXBTdtFnAIVN7lZUuwYVXo2U.php | 111 + .../.htaccess | 24 + ...mLCEPWXi8_WpSygryxALEZI8mTPC8_OGyrZ2Fabn0eE.php | 111 + .../.htaccess | 24 + ...2i6yoN2ydmeF_0Jkmb13hovpZLDX9a3g7C8OCefqvBE.php | 136 + .../.htaccess | 24 + ...O0vn9XLtzf-jlTXXyaG4iBrHDOouaI07z1tsg4Wv2FI.php | 184 + .../.htaccess | 24 + ...F1S8xiD9v_OSTWRLoYlDVNmRoGnqWnVnLCShp4QklGk.php | 144 + .../.htaccess | 24 + ...y98mIi-Zf8LDucE_6GnB5FaB3LcYxrA1fcwyXMDhgpM.php | 195 + .../.htaccess | 24 + ...geVaEtHo4-DLEvcOVgMu2fy97bp5thyljAgsjqUC-6A.php | 148 + .../.htaccess | 24 + ...jp5AiObtZKC2MQG7fuZX0y1fjOUd1-6-l9aii74C0FM.php | 140 + .../.htaccess | 24 + ...l6Urljs9M8Tw0S0qbPkA1jk0oV9dM9kGoH0Hk0XkdKM.php | 163 + .../.htaccess | 24 + ...TgdpgDkRlrMLennkxepyNK_UmyXrK_RLRVOKxksG5Q8.php | 160 + .../.htaccess | 24 + ...NCa0vPzbqQoJeI5PQ-_EC2lLowK1Q7JBfX0zW7DBM9w.php | 191 + .../.htaccess | 24 + ...ldO-ejXW0NGpmJONqdv6DWpq1qpwqulU2LD1Hd_gmvg.php | 183 + .../.htaccess | 24 + ...Th5l2hN0f6Ma4gFYOtO2C-rSyxyVFpYtQgRpsVws96U.php | 201 + .../.htaccess | 24 + ...F50dBELLsmxqqklcxA330juNZkrr2OYZVxqvCUwuDww.php | 172 + .../.htaccess | 24 + ...x2KgxsEDB-VGR6LVssZKjIymr1GmVkBssHnQyEm2bNE.php | 129 + .../.htaccess | 24 + ...2WFN-wTIU28SR-CGz6ne5iJ7UYJ__d0oKH_BqjELiXs.php | 115 + .../.htaccess | 24 + ...yC-0SwrgZhoM__o3QfpUc0FUYyiCW49MWXcH9c2nkTc.php | 259 + .../.htaccess | 24 + ...oLebTqZOQ4FEOYSP4ypPKG8vV8XhdEiuxVllmMq4Bf0.php | 122 + .../.htaccess | 24 + ...nki22-VloCr_0A3ADi_nLHF10lNbt5m1RBkgbzQ5n_U.php | 122 + .../.htaccess | 24 + ...GdlIhVbikx-fA0-4CQ3MPL_SGsXylcg2y7w2yl4URSc.php | 149 + .../.htaccess | 24 + ...XRpOjW-igqZ-8voUfATQ-YOgid6NAcmgtqubqELAzck.php | 257 + .../.htaccess | 24 + ...rfbUMBUAiPremAP4oTh19zwwc6AOpfxhMiZeg2HHUDI.php | 301 + .../.htaccess | 24 + ...DjHx4Q6GptpcnJYZKFvl_O2mNlF1dGfjTMer7ijvstg.php | 161 + .../.htaccess | 24 + ...IZV-A1UEUQn6guwW7KcekZcguzS3g5MlnwPu_AcyKA8.php | 161 + ...-ue9TgJj0I5-rMMk3TjEy40VE9fzd1r9-8X-7_Xoc10.php | 159 + .../.htaccess | 24 + .../.htaccess | 24 + ...Zp4j8WOB-ruE4afq0oqkHMciC0bkERobhIvPppiMpTk.php | 111 + .../.htaccess | 24 + ...IamCj4ZiXA1ljOsYMZo1xSBcfvBv9GeFNyr03z-PEAI.php | 122 + .../.htaccess | 24 + ...wkygFLVQTM-Hl3SFZApBw2BX70mB2KE0lRupZ_XWLmo.php | 117 + .../.htaccess | 24 + ...FAsmE60-BoU8casS-vrznJ3OmBFuVycq-Rk--VFl8k0.php | 144 + .../.htaccess | 24 + ...If1SUV6RBARnSPj8rqjWlutbGfGtqDbtw7zE4JSvIS4.php | 120 + .../.htaccess | 24 + ...WnsP9teNuIkaT9v79pefb3FHa5pv-ae01Bkm-DHyraI.php | 117 + .../.htaccess | 24 + ...jVsVjnW4Ti66_aOrmuvyq1J0sSEodr0Vw0Ghi3_xQTY.php | 162 + .../.htaccess | 24 + ...79DU8KxcmkgC__dVckc70PtKNyX0JTrR_StQhzFDodQ.php | 166 + .../.htaccess | 24 + ...50EGqUpJUkGwlGSF_rxWx8tVcaeMLhheM7XDOex8SBo.php | 198 + .../.htaccess | 24 + ...awP8niKo6kJJByA0yq_ur1Fq290C3930X9xdQGDHWLA.php | 168 + .../.htaccess | 24 + ...YDIxnY6em351S8cN8HMQ9T_tADt7JtsGtYPjxBMtntY.php | 153 + .../.htaccess | 24 + ...ifmMUn1x5Zu2DOxgqkUWFQuyCPwlU0yIy6WwhxZ9cVw.php | 192 + .../.htaccess | 24 + ...yzGpKG5MVZFRwbTWdRgogpQvmBhorl5-MJjkTEuV-hw.php | 131 + .../.htaccess | 24 + ...WBEAgdwkSaKaZ6aZS-4HX5OabQBN8zZZmgNG2vbNm70.php | 276 + .../.htaccess | 24 + ...OKK2RKMrS202-LWaWEwFqELc-ZApb_US_y1QBanwOhc.php | 191 + .../.htaccess | 24 + ...6pFmiaTBL1GQ4C1BUgWB36AjL7MrabMrMgQrbkRz2sA.php | 148 + .../.htaccess | 24 + ...Yzm3QokizhY4JY2gRSkIiW_a_piM2P0TujW-B7D9OCA.php | 219 + .../.htaccess | 24 + ...GrC6fmguNIfUUkt_D3JWijoBAQnJN-SV3lDeoLaieUA.php | 118 + .../.htaccess | 24 + ...DeHgKK39rrFSr8khrEQb8JIewgZ2hYdbDxz2xqMKbfw.php | 108 + .../.htaccess | 24 + ...GLMEoMQbdXUWYZK0ics5xcQMai8rLoM_1ePPKaXhUDs.php | 257 + .../.htaccess | 24 + ...D_2f0pCany-QfD1r5KxZt3XLmaSW5U9DjBM7jovChr8.php | 150 + .../.htaccess | 24 + ...hZVGrwuRQaaZfasxp2eU0U3eOBHg2GboxpLk9VufND8.php | 190 + .../.htaccess | 24 + ...TguneWL_ztzDqZDKTY8w5QJKdcC5xentjVNUtIoLPFw.php | 175 + .../.htaccess | 24 + ...iCbH5gXQEph8PDprZIqNvOSzrq_xzPI0PkrCrY9ItG8.php | 158 + .../.htaccess | 24 + ...rxj3dUguevULIlHM3kP95jdcHWcOXrgdFkI1jnIllYo.php | 150 + .../.htaccess | 24 + ...F2sYkR0hoLKBzNGCgyIaZZ5q4HXpdIcw_SKQb6sIrlc.php | 148 + .../.htaccess | 24 + ...OugG4kvXyEQYoJy-Fl--PVfipbsrWATtCJrMyeNdfiY.php | 337 + .../.htaccess | 24 + ...vOpZ6o_zVWvOBFymCPz-t1kpMAKi4rR3oQ_ik1u_Yvk.php | 120 + .../.htaccess | 24 + ...X5MWXPoGHAoq43_oAgTy8lzbl-z-VBlEwDUsmTaPf48.php | 111 + .../.htaccess | 24 + ...w5wtlZrOK2MYqdgmxHUIIaCDzaAac1psFQxDlzLC6Wc.php | 182 + .../.htaccess | 24 + ...AGPBg1udEqFXAuqGq9nAFJcoazg-XRp0YKHSIoVd5Lk.php | 182 + .../.htaccess | 24 + ...o4OJNKn5AceLBzOt2XXhnnFpdBnjDYF-Y-W-GoeRVvQ.php | 141 + .../.htaccess | 24 + ...52dKEon2f7FftDk0ebQK76WAbtKuLk7P7hrP5PTKbf8.php | 156 + .../.htaccess | 24 + ...476MXL2x7zQAVNXevTxauHZP9nJX4-txkqzmjK_zSeI.php | 140 + .../.htaccess | 24 + ...8dVaiv11Gzs4jvZN_PiLZQACnPVIuE4XXJv8l32YRqU.php | 135 + .../.htaccess | 24 + ...4P36hpekP5M4TMJdFGoSy6niLDvtdsNi5qJD_x8hU_4.php | 136 + .../.htaccess | 24 + ...SlsBj51fPntyhrclzd5HxBf07Owgd8CKUDLvr3a6ZX4.php | 204 + .../.htaccess | 24 + ...Znwe9CKbBb3L-ZgP7zCXvRk04Xzv5BHlE4EDIE2MhDE.php | 144 + .../.htaccess | 24 + ...6w_bD9HGOWa92NgVhSlVT-Rs20VdAHApOLOoKvNWyoo.php | 122 + .../.htaccess | 24 + ...CiyvJlln8OFeQ4ADOh9aM_-r8peF7JvfmF-Fb3YYXyw.php | 185 + .../.htaccess | 24 + ...RY9QQemItK8xm8E_k0dTaDaqgLtCrQ1yhXSN1qHBQwU.php | 111 + .../.htaccess | 24 + ...Apybua1HOlWV2uJHwtVhTsH68MUp24PKPFT5mlwUYmg.php | 132 + .../.htaccess | 24 + ...pBlzSnO053C5QiZtbC8td9pU9WmB41C3nP9pEITbIzg.php | 132 + .../.htaccess | 24 + ...lbsGqHbr7bQ1StqkQDbR7-hYKy-2O44IeKMn2gJ8SEo.php | 140 + .../.htaccess | 24 + ...ZQ_S-MjoBfUonNTWAXMr1ugMFEdBOEr5yDy1s3AJ7bk.php | 122 + .../.htaccess | 24 + ...93o2dkX0pn28KFiBPzdfkMvgsRVpsAFrmXg_5N6jLv8.php | 179 + .../.htaccess | 24 + ...YqRhvs3O1dMDF9ytauKom94kP2mOCdeE0RZXPjlSML0.php | 106 + .../.htaccess | 24 + ...V5w40mw4TjrQj9BvdSgTKTlgmKUlbsGu8N_eVlnZNJM.php | 164 + .../.htaccess | 24 + ...C0xkwevsk08vFdt-k_srRSACQXZeRd3k8gfhrmaQ7Lc.php | 195 + .../.htaccess | 24 + ...iK_cCDw4fOyfCQrhzP2hrqVlBB0y9-O_-MHqf9kLUbg.php | 250 + .../.htaccess | 24 + ...hzd0vd6md_W1oMMyvaYaxl9eaPWsblciyvDcKDnzRZg.php | 195 + .../.htaccess | 24 + ...vI6uQBwF79RxSrVbqRZxPsIbhY6FO7rHxiyyPCIwDw4.php | 146 + .../.htaccess | 24 + ...hp5stAglglQpzcVwqU_zhGfTYMg-3Z5Ovt7-hs5_fSs.php | 167 + .../.htaccess | 24 + ...k4xoG4nQjsalpQ3Z7n7WhTrMx_nqI_TUPKcrxQsKK7Q.php | 148 + .../.htaccess | 24 + ...CzDiW0DRmSYb7dSdXCp-E0zPjMGQ9gEOr5axlhrvOR4.php | 164 + .../files/pictures/picture-109-1687687574.jpg | Bin 0 -> 31067 bytes .../files/pictures/picture-117-1695749316.jpg | Bin 0 -> 115198 bytes .../files/pictures/picture-128-1703396741.jpg | Bin 0 -> 59793 bytes .../files/pictures/picture-129-1702640010.jpg | Bin 0 -> 9321 bytes .../files/pictures/picture-147-1719490209.jpg | Bin 0 -> 27014 bytes .../files/pictures/picture-29-1619211068.jpg | Bin 0 -> 4523 bytes .../files/pictures/picture-39-1620645703.jpg | Bin 0 -> 69903 bytes .../files/pictures/picture-45-1624000299.jpg | Bin 0 -> 114184 bytes .../files/pictures/picture-46-1624961678.jpg | Bin 0 -> 19469 bytes .../files/pictures/picture-50-1624962784.jpg | Bin 0 -> 65092 bytes .../files/pictures/picture-51-1624962503.jpg | Bin 0 -> 16962 bytes .../files/pictures/picture-53-1624962885.png | Bin 0 -> 38523 bytes .../files/pictures/picture-57-1624969463.jpg | Bin 0 -> 156038 bytes .../files/pictures/picture-62-1626780241.jpg | Bin 0 -> 81723 bytes .../files/pictures/picture-79-1642760519.jpg | Bin 0 -> 39488 bytes .../files/pictures/picture-88-1673355757.jpg | Bin 0 -> 42571 bytes .../public/2024-10/slide-image-4.png | Bin 0 -> 104033 bytes .../public/2024-10/slide-image-5.png | Bin 0 -> 496753 bytes .../public/2024-10/slide-image-7.png | Bin 0 -> 95070 bytes .../public/2024-10/slide-image-4.png | Bin 0 -> 146274 bytes .../public/2024-10/slide-image-5.png | Bin 0 -> 619476 bytes .../public/2024-10/slide-image-7.png | Bin 0 -> 118893 bytes .../public/core/modules/image/sample.png | Bin 0 -> 339218 bytes .../styles/large/public/2024-10/slide-image-4.png | Bin 0 -> 46874 bytes .../styles/large/public/2024-10/slide-image-5.png | Bin 0 -> 231411 bytes .../styles/large/public/2024-10/slide-image-7.png | Bin 0 -> 48685 bytes .../slick_media/public/2024-10/slide-image-4.png | Bin 0 -> 95603 bytes .../slick_media/public/2024-10/slide-image-5.png | Bin 0 -> 480618 bytes .../slick_media/public/2024-10/slide-image-7.png | Bin 0 -> 100819 bytes .../thumbnail/public/2024-10/slide-image-4.png | Bin 0 -> 7596 bytes .../thumbnail/public/2024-10/slide-image-5.png | Bin 0 -> 14151 bytes .../thumbnail/public/2024-10/slide-image-7.png | Bin 0 -> 5676 bytes .../thumbnail/public/AoC_Auto Street Light(1).png | Bin 0 -> 9298 bytes .../thumbnail/public/AoC_Auto Street Light(2).gif | Bin 0 -> 3172 bytes .../thumbnail/public/AoC_Auto Street Light(3).png | Bin 0 -> 2185 bytes .../styles/thumbnail/public/AoC_Blink LED(1).jpeg | Bin 0 -> 1484 bytes .../styles/thumbnail/public/AoC_Blink LED(2).png | Bin 0 -> 5296 bytes .../styles/thumbnail/public/AoC_Blink LED(3).gif | Bin 0 -> 2969 bytes .../public/AoC_Control LED using Relay(2).png | Bin 0 -> 7380 bytes .../public/AoC_Control LED with Relay(1).gif | Bin 0 -> 862 bytes .../public/AoC_Control LED with Relay(3).gif | Bin 0 -> 3429 bytes .../thumbnail/public/AoC_Electronic Dice (2).png | Bin 0 -> 5833 bytes .../thumbnail/public/AoC_Electronic Dice(1).png | Bin 0 -> 13334 bytes .../thumbnail/public/AoC_Electronic Dice(3).gif | Bin 0 -> 3419 bytes .../styles/thumbnail/public/AoC_Gas Sensor(1).jpg | Bin 0 -> 2028 bytes .../styles/thumbnail/public/AoC_Gas Sensor(4).png | Bin 0 -> 3041 bytes .../styles/thumbnail/public/AoC_Gas senrsor(3).png | Bin 0 -> 9110 bytes .../styles/thumbnail/public/AoC_Gas sensor(2).png | Bin 0 -> 4239 bytes .../thumbnail/public/AoC_Intruder sensor(1).png | Bin 0 -> 4757 bytes .../thumbnail/public/AoC_Intruder sensor(2).png | Bin 0 -> 8023 bytes .../thumbnail/public/AoC_Intruder sensor(3).gif | Bin 0 -> 2935 bytes .../thumbnail/public/AoC_LCD ScrollingText(1).gif | Bin 0 -> 3494 bytes .../thumbnail/public/AoC_LCD ScrollingText(2).png | Bin 0 -> 3629 bytes .../thumbnail/public/AoC_LCD ScrollingText(3).gif | Bin 0 -> 3357 bytes .../thumbnail/public/AoC_LED Control Button(1).jpg | Bin 0 -> 1826 bytes .../thumbnail/public/AoC_LED Control Button(2).gif | Bin 0 -> 2814 bytes .../thumbnail/public/AoC_LED Control Button(3).png | Bin 0 -> 8430 bytes .../thumbnail/public/AoC_LED Control Button(4).gif | Bin 0 -> 4380 bytes .../public/AoC_Motion senosr with alarm (4).gif | Bin 0 -> 3320 bytes .../public/AoC_Motion sensor with Alarm (2).gif | Bin 0 -> 3274 bytes .../public/AoC_Motion sensor with Alarm (3).png | Bin 0 -> 9195 bytes .../public/AoC_Motion sensor with Alarm (5).png | Bin 0 -> 3748 bytes .../public/AoC_Motion sensor with alarm(1).jpg | Bin 0 -> 1635 bytes .../thumbnail/public/AoC_RGB Temp Indicator(1).jpg | Bin 0 -> 2073 bytes .../thumbnail/public/AoC_RGB Temp Indicator(2).jpg | Bin 0 -> 1841 bytes .../thumbnail/public/AoC_RGB Temp Indicator(3).png | Bin 0 -> 9002 bytes .../thumbnail/public/AoC_RGB Temp Indicator(4).gif | Bin 0 -> 3799 bytes .../styles/thumbnail/public/AoC_Servo Motor(2).gif | Bin 0 -> 5528 bytes .../styles/thumbnail/public/AoC_Servo Motor(3).png | Bin 0 -> 6053 bytes .../styles/thumbnail/public/AoC_Servo Motor(4).gif | Bin 0 -> 3082 bytes .../public/AoC_Therimstor Temp Display(4).gif | Bin 0 -> 3287 bytes .../public/AoC_Thermistor Temp Display(1).png | Bin 0 -> 2275 bytes .../public/AoC_Thermistor Temp Display(2).gif | Bin 0 -> 1617 bytes .../public/AoC_Thermistor temp Display(3).png | Bin 0 -> 4783 bytes .../thumbnail/public/AoC_servo motor(1).jpeg | Bin 0 -> 2106 bytes .../Arduino on Cloud_Up and Down Counter(1).png | Bin 0 -> 4775 bytes .../Arduino on Cloud_Up and Down Counter(2).png | Bin 0 -> 1963 bytes .../Arduino on Cloud_Up and Down Counter.gif | Bin 0 -> 3980 bytes .../files/styles/thumbnail/public/Blink_1.png | Bin 0 -> 7759 bytes .../files/styles/thumbnail/public/Blink_2.png | Bin 0 -> 5971 bytes .../files/styles/thumbnail/public/Blink_3.png | Bin 0 -> 8839 bytes .../files/styles/thumbnail/public/Blink_4.png | Bin 0 -> 5291 bytes .../files/styles/thumbnail/public/Blink_5.png | Bin 0 -> 7054 bytes .../files/styles/thumbnail/public/Blink_6.png | Bin 0 -> 7760 bytes .../files/styles/thumbnail/public/Blink_7.png | Bin 0 -> 8525 bytes .../styles/thumbnail/public/E_Blink of LED.jpg | Bin 0 -> 1484 bytes .../styles/thumbnail/public/E_Blink of LED_1.png | Bin 0 -> 6334 bytes .../styles/thumbnail/public/E_Blink of LED_7.gif | Bin 0 -> 4078 bytes .../styles/thumbnail/public/E_Control LED.jpg | Bin 0 -> 1826 bytes .../styles/thumbnail/public/E_Control LED_1.gif | Bin 0 -> 2814 bytes .../files/styles/thumbnail/public/E_Intruder.png | Bin 0 -> 4757 bytes .../files/styles/thumbnail/public/E_Intruder_1.png | Bin 0 -> 9059 bytes .../files/styles/thumbnail/public/E_Intruder_2.png | Bin 0 -> 9830 bytes .../files/styles/thumbnail/public/E_Intruder_3.png | Bin 0 -> 9103 bytes .../files/styles/thumbnail/public/E_Intruder_4.png | Bin 0 -> 9285 bytes .../files/styles/thumbnail/public/E_Intruder_5.gif | Bin 0 -> 4808 bytes .../files/styles/thumbnail/public/E_LCD 2.png | Bin 0 -> 3906 bytes .../files/styles/thumbnail/public/E_LCD 3.png | Bin 0 -> 3906 bytes .../files/styles/thumbnail/public/E_LCD.gif | Bin 0 -> 3494 bytes .../files/styles/thumbnail/public/E_LCD_1.png | Bin 0 -> 10330 bytes .../files/styles/thumbnail/public/E_LCD_2.png | Bin 0 -> 8827 bytes .../files/styles/thumbnail/public/E_LCD_4.png | Bin 0 -> 9015 bytes .../files/styles/thumbnail/public/E_LCD_5.gif | Bin 0 -> 4229 bytes .../files/styles/thumbnail/public/E_Servo.gif | Bin 0 -> 5528 bytes .../files/styles/thumbnail/public/E_Servo_1.jpg | Bin 0 -> 1841 bytes .../files/styles/thumbnail/public/E_Servo_2.png | Bin 0 -> 10017 bytes .../files/styles/thumbnail/public/E_Servo_3.png | Bin 0 -> 9951 bytes .../files/styles/thumbnail/public/E_Servo_4.png | Bin 0 -> 6531 bytes .../files/styles/thumbnail/public/E_Servo_5.png | Bin 0 -> 6813 bytes .../files/styles/thumbnail/public/E_Servo_6.png | Bin 0 -> 8621 bytes .../files/styles/thumbnail/public/E_Servo_7.gif | Bin 0 -> 4762 bytes .../files/styles/thumbnail/public/E_Temp.jpg | Bin 0 -> 2073 bytes .../files/styles/thumbnail/public/E_Temp_1.png | Bin 0 -> 8962 bytes .../files/styles/thumbnail/public/E_Temp_2.png | Bin 0 -> 9623 bytes .../files/styles/thumbnail/public/E_Temp_3.png | Bin 0 -> 6583 bytes .../styles/thumbnail/public/LED_Pushbutton_1.png | Bin 0 -> 9610 bytes .../styles/thumbnail/public/LED_Pushbutton_10.png | Bin 0 -> 4980 bytes .../styles/thumbnail/public/LED_Pushbutton_11.png | Bin 0 -> 5699 bytes .../styles/thumbnail/public/LED_Pushbutton_12.png | Bin 0 -> 5603 bytes .../styles/thumbnail/public/LED_Pushbutton_13.png | Bin 0 -> 6993 bytes .../styles/thumbnail/public/LED_Pushbutton_14.gif | Bin 0 -> 3116 bytes .../styles/thumbnail/public/LED_Pushbutton_2.png | Bin 0 -> 3405 bytes .../styles/thumbnail/public/LED_Pushbutton_3.png | Bin 0 -> 8962 bytes .../styles/thumbnail/public/LED_Pushbutton_4.png | Bin 0 -> 3631 bytes .../styles/thumbnail/public/LED_Pushbutton_5.png | Bin 0 -> 9560 bytes .../styles/thumbnail/public/LED_Pushbutton_6.png | Bin 0 -> 9035 bytes .../styles/thumbnail/public/LED_Pushbutton_7.png | Bin 0 -> 5012 bytes .../styles/thumbnail/public/LED_Pushbutton_8.png | Bin 0 -> 4441 bytes .../styles/thumbnail/public/LED_Pushbutton_9.png | Bin 0 -> 9440 bytes .../files/styles/thumbnail/public/fossee_logo.png | Bin 0 -> 6227 bytes .../files/styles/thumbnail/public/gas sesnor.gif | Bin 0 -> 3197 bytes .../files/styles/thumbnail/public/left-img.png | Bin 0 -> 4613 bytes .../public/pictures/picture-117-1695749316.jpg | Bin 0 -> 2527 bytes .../public/pictures/picture-128-1703396741.jpg | Bin 0 -> 2467 bytes .../public/pictures/picture-129-1702640010.jpg | Bin 0 -> 2297 bytes .../public/pictures/picture-147-1719490209.jpg | Bin 0 -> 2010 bytes .../public/pictures/picture-46-1624961678.jpg | Bin 0 -> 1999 bytes .../public/pictures/picture-50-1624962784.jpg | Bin 0 -> 2392 bytes .../public/pictures/picture-51-1624962503.jpg | Bin 0 -> 2054 bytes .../public/pictures/picture-53-1624962885.png | Bin 0 -> 13236 bytes .../public/pictures/picture-57-1624969463.jpg | Bin 0 -> 2512 bytes .../public/pictures/picture-62-1626780241.jpg | Bin 0 -> 2034 bytes .../1.xml | 5 + sites/default/settings.php | 799 +++ themes/openplc/css/header.css | 34 + themes/openplc/css/style.css | 79 + themes/openplc/image/NMEICT.png | Bin 0 -> 12597 bytes themes/openplc/image/footer_license.png | Bin 0 -> 1697 bytes themes/openplc/image/fossee-logo.png | Bin 0 -> 19335 bytes themes/openplc/image/iitb-logo.png | Bin 0 -> 16169 bytes .../includes/bootstrap/css/bootstrap-theme.min.css | 7 + .../openplc/includes/bootstrap/css/bootstrap.css | 6757 ++++++++++++++++++++ .../includes/bootstrap/css/bootstrap.min.css | 6 + themes/openplc/includes/bootstrap/js/bootstrap.js | 1951 ++++++ .../openplc/includes/bootstrap/js/bootstrap.min.js | 6 + .../includes/fontawesome/css/fontawesome-all.css | 2675 ++++++++ .../includes/fontawesome/css/fontawesome.min.css | 5 + .../fontawesome/webfonts/fa-brands-400.eot | Bin 0 -> 98620 bytes .../fontawesome/webfonts/fa-brands-400.svg | 1008 +++ .../fontawesome/webfonts/fa-brands-400.ttf | Bin 0 -> 98384 bytes .../fontawesome/webfonts/fa-brands-400.woff | Bin 0 -> 63712 bytes .../fontawesome/webfonts/fa-brands-400.woff2 | Bin 0 -> 54420 bytes .../fontawesome/webfonts/fa-regular-400.eot | Bin 0 -> 31156 bytes .../fontawesome/webfonts/fa-regular-400.svg | 366 ++ .../fontawesome/webfonts/fa-regular-400.ttf | Bin 0 -> 30928 bytes .../fontawesome/webfonts/fa-regular-400.woff | Bin 0 -> 14712 bytes .../fontawesome/webfonts/fa-regular-400.woff2 | Bin 0 -> 12220 bytes .../includes/fontawesome/webfonts/fa-solid-900.eot | Bin 0 -> 102152 bytes .../includes/fontawesome/webfonts/fa-solid-900.svg | 1467 +++++ .../includes/fontawesome/webfonts/fa-solid-900.ttf | Bin 0 -> 101932 bytes .../fontawesome/webfonts/fa-solid-900.woff | Bin 0 -> 48704 bytes .../fontawesome/webfonts/fa-solid-900.woff2 | Bin 0 -> 38784 bytes themes/openplc/js/jquery-3.3.1.min.js | 3 + themes/openplc/js/nav.js | 5 + themes/openplc/openplc.info.yml | 25 + themes/openplc/openplc.libraries.yml | 30 + themes/openplc/openplc.theme | 49 + themes/openplc/screenshot.png | Bin 0 -> 425805 bytes .../templates/block--openplc-branding.html.twig | 11 + .../block--system-menu-block--resources.html.twig | 47 + themes/openplc/templates/field.html.twig | 77 + themes/openplc/templates/html.html.twig | 26 + themes/openplc/templates/menu--resources.html.twig | 51 + themes/openplc/templates/menu-local-task.html.twig | 19 + .../openplc/templates/menu-local-tasks.html.twig | 23 + themes/openplc/templates/page--front.html.twig | 67 + themes/openplc/templates/page.html.twig | 110 + .../openplc/templates/region--breadcrumb.html.twig | 8 + themes/openplc/templates/region--content.html.twig | 19 + themes/openplc/templates/region--footer.html.twig | 40 + ...lds--Carousel_Images--carousel_images.html.twig | 8 + 1015 files changed, 95111 insertions(+) create mode 100755 composer.json create mode 100644 libraries/DOMPurify/.babelrc create mode 100644 libraries/DOMPurify/.editorconfig create mode 100755 libraries/DOMPurify/.github/FUNDING.yml create mode 100644 libraries/DOMPurify/.github/ISSUE_TEMPLATE.md create mode 100644 libraries/DOMPurify/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 libraries/DOMPurify/.github/dependabot.yml create mode 100644 libraries/DOMPurify/.github/workflows/build-and-test.yml create mode 100644 libraries/DOMPurify/.github/workflows/codeql-analysis.yml create mode 100644 libraries/DOMPurify/.gitignore create mode 100644 libraries/DOMPurify/.nvmrc create mode 100644 libraries/DOMPurify/.prettierignore create mode 100644 libraries/DOMPurify/.prettierrc create mode 100644 libraries/DOMPurify/.settings/.gitignore create mode 100644 libraries/DOMPurify/dist/purify.cjs.d.ts create mode 100644 libraries/DOMPurify/dist/purify.cjs.js create mode 100644 libraries/DOMPurify/dist/purify.cjs.js.map create mode 100644 libraries/DOMPurify/dist/purify.es.d.mts create mode 100644 libraries/DOMPurify/dist/purify.es.mjs create mode 100644 libraries/DOMPurify/dist/purify.es.mjs.map create mode 100644 libraries/DOMPurify/dist/purify.js create mode 100644 libraries/DOMPurify/dist/purify.js.map create mode 100644 libraries/DOMPurify/dist/purify.min.js create mode 100644 libraries/DOMPurify/dist/purify.min.js.map create mode 100644 libraries/colorbox/LICENSE.md create mode 100644 libraries/colorbox/README.md create mode 100644 libraries/colorbox/bower.json create mode 100644 libraries/colorbox/colorbox.ai create mode 100644 libraries/colorbox/content/ajax.html create mode 100644 libraries/colorbox/content/daisy.jpg create mode 100644 libraries/colorbox/content/daisy@2x.jpg create mode 100644 libraries/colorbox/content/homer.jpg create mode 100644 libraries/colorbox/content/marylou.jpg create mode 100644 libraries/colorbox/content/ohoopee1.jpg create mode 100644 libraries/colorbox/content/ohoopee2.jpg create mode 100644 libraries/colorbox/content/ohoopee3.jpg create mode 100644 libraries/colorbox/example1/colorbox.css create mode 100644 libraries/colorbox/example1/images/border.png create mode 100644 libraries/colorbox/example1/images/controls.png create mode 100644 libraries/colorbox/example1/images/loading.gif create mode 100644 libraries/colorbox/example1/images/loading_background.png create mode 100644 libraries/colorbox/example1/images/overlay.png create mode 100644 libraries/colorbox/example1/index.html create mode 100644 libraries/colorbox/example2/colorbox.css create mode 100644 libraries/colorbox/example2/images/controls.png create mode 100644 libraries/colorbox/example2/images/loading.gif create mode 100644 libraries/colorbox/example2/index.html create mode 100644 libraries/colorbox/example3/colorbox.css create mode 100644 libraries/colorbox/example3/images/controls.png create mode 100644 libraries/colorbox/example3/images/loading.gif create mode 100644 libraries/colorbox/example3/index.html create mode 100644 libraries/colorbox/example4/colorbox.css create mode 100644 libraries/colorbox/example4/images/border1.png create mode 100644 libraries/colorbox/example4/images/border2.png create mode 100644 libraries/colorbox/example4/images/loading.gif create mode 100644 libraries/colorbox/example4/index.html create mode 100644 libraries/colorbox/example5/colorbox.css create mode 100644 libraries/colorbox/example5/images/border.png create mode 100644 libraries/colorbox/example5/images/controls.png create mode 100644 libraries/colorbox/example5/images/loading.gif create mode 100644 libraries/colorbox/example5/images/loading_background.png create mode 100644 libraries/colorbox/example5/index.html create mode 100644 libraries/colorbox/i18n/jquery.colorbox-ar.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-bg.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-bn.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-ca.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-cs.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-da.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-de.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-es.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-et.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-fa.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-fi.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-fr.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-gl.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-gr.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-he.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-hr.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-hu.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-id.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-it.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-ja.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-kr.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-lt.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-lv.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-my.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-nl.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-no.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-pl.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-pt-BR.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-ro.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-ru.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-si.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-sk.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-sr.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-sv.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-tk.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-tr.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-uk.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-vi.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-zh-CN.js create mode 100644 libraries/colorbox/i18n/jquery.colorbox-zh-TW.js create mode 100644 libraries/colorbox/jquery.colorbox-min.js create mode 100644 libraries/colorbox/jquery.colorbox.js create mode 100644 libraries/colorbox/package.json create mode 100644 libraries/drupal-superfish/.gitignore create mode 100644 libraries/drupal-superfish/CHANGELOG.MD create mode 100644 libraries/drupal-superfish/README.MD create mode 100644 libraries/drupal-superfish/VERSION create mode 100644 libraries/drupal-superfish/composer.json create mode 100644 libraries/drupal-superfish/css/superfish.css create mode 100644 libraries/drupal-superfish/jquery.hoverIntent.minified.js create mode 100644 libraries/drupal-superfish/sfsmallscreen.js create mode 100644 libraries/drupal-superfish/sftouchscreen.js create mode 100644 libraries/drupal-superfish/style/ABOUT_THIS_DIRECTORY.MD create mode 100644 libraries/drupal-superfish/style/THEMES.MD create mode 100644 libraries/drupal-superfish/style/THEMES_SCSS.MD create mode 100644 libraries/drupal-superfish/style/black/black.css create mode 100644 libraries/drupal-superfish/style/blue/blue.css create mode 100644 libraries/drupal-superfish/style/coffee/coffee.css create mode 100644 libraries/drupal-superfish/style/default/default.css create mode 100644 libraries/drupal-superfish/style/white/white.css create mode 100644 libraries/drupal-superfish/superfish.js create mode 100644 libraries/drupal-superfish/supersubs.js create mode 100644 libraries/drupal-superfish/supposition.js create mode 100755 libraries/easing/.editorconfig create mode 100755 libraries/easing/.eslintignore create mode 100755 libraries/easing/.eslintrc.js create mode 100755 libraries/easing/.gitignore create mode 100755 libraries/easing/LICENSE-BSD-3-Clause.txt create mode 100755 libraries/easing/README.md create mode 100755 libraries/easing/example/demo.html create mode 100755 libraries/easing/example/example.html create mode 100755 libraries/easing/example/verify.html create mode 100755 libraries/easing/jquery.easing.compatibility.js create mode 100755 libraries/easing/jquery.easing.js create mode 100755 libraries/easing/jquery.easing.min.js create mode 100755 libraries/easing/package-lock.json create mode 100755 libraries/easing/package.json create mode 100755 libraries/flexslider/flexslider.css create mode 100755 libraries/flexslider/jquery.flexslider-min.js create mode 100755 libraries/jquery.cycle/README.md create mode 100755 libraries/jquery.cycle/cycle.jquery.json create mode 100755 libraries/jquery.cycle/jquery.cycle.all.js create mode 100755 libraries/jquery.cycle/jquery.cycle.all.js.1 create mode 100755 libraries/jquery.cycle/jquery.cycle.all.js.2 create mode 100755 libraries/jquery.cycle/jquery.cycle.lite.js create mode 100755 libraries/jquery.hoverIntent/jquery.hoverIntent.js create mode 100755 libraries/jquery.hoverIntent/libraries/jquery.cycle/jquery.cycle.all.js create mode 100755 libraries/jquery.pause/jquery.pause.js create mode 100755 libraries/json2/json2.js create mode 100755 libraries/owlcarousel2/dist/LICENSE create mode 100755 libraries/owlcarousel2/dist/README.md create mode 100755 libraries/owlcarousel2/dist/assets/ajax-loader.gif create mode 100755 libraries/owlcarousel2/dist/assets/owl.carousel.css create mode 100755 libraries/owlcarousel2/dist/assets/owl.carousel.min.css create mode 100755 libraries/owlcarousel2/dist/assets/owl.theme.default.css create mode 100755 libraries/owlcarousel2/dist/assets/owl.theme.default.min.css create mode 100755 libraries/owlcarousel2/dist/assets/owl.theme.green.css create mode 100755 libraries/owlcarousel2/dist/assets/owl.theme.green.min.css create mode 100755 libraries/owlcarousel2/dist/assets/owl.video.play.png create mode 100755 libraries/owlcarousel2/dist/owl.carousel.js create mode 100755 libraries/owlcarousel2/dist/owl.carousel.min.js create mode 100755 libraries/slick/.gitignore create mode 100755 libraries/slick/CONTRIBUTING.markdown create mode 100755 libraries/slick/ISSUE_TEMPLATE.md create mode 100755 libraries/slick/LICENSE create mode 100755 libraries/slick/Makefile create mode 100755 libraries/slick/README.markdown create mode 100755 libraries/slick/bower.json create mode 100755 libraries/slick/component.json create mode 100755 libraries/slick/index.html create mode 100755 libraries/slick/package.json create mode 100755 libraries/slick/slick.jquery.json create mode 100755 libraries/slick/slick/ajax-loader.gif create mode 100755 libraries/slick/slick/config.rb create mode 100755 libraries/slick/slick/fonts/slick.eot create mode 100755 libraries/slick/slick/fonts/slick.svg create mode 100755 libraries/slick/slick/fonts/slick.ttf create mode 100755 libraries/slick/slick/fonts/slick.woff create mode 100755 libraries/slick/slick/slick-theme.css create mode 100755 libraries/slick/slick/slick-theme.less create mode 100755 libraries/slick/slick/slick-theme.scss create mode 100755 libraries/slick/slick/slick.css create mode 100755 libraries/slick/slick/slick.js create mode 100755 libraries/slick/slick/slick.less create mode 100755 libraries/slick/slick/slick.min.js create mode 100755 libraries/slick/slick/slick.scss create mode 100755 libraries/superfish/CHANGELOG create mode 100755 libraries/superfish/README create mode 100755 libraries/superfish/VERSION create mode 100755 libraries/superfish/composer.json create mode 100755 libraries/superfish/css/superfish.css create mode 100755 libraries/superfish/jquery.hoverIntent.minified.js create mode 100755 libraries/superfish/sfsmallscreen.js create mode 100755 libraries/superfish/sftouchscreen.js create mode 100755 libraries/superfish/style/ABOUT_THIS_DIRECTORY.txt create mode 100755 libraries/superfish/style/THEMES.txt create mode 100755 libraries/superfish/style/THEMES_SCSS.txt create mode 100755 libraries/superfish/style/black/black.css create mode 100755 libraries/superfish/style/blue/blue.css create mode 100755 libraries/superfish/style/coffee/coffee.css create mode 100755 libraries/superfish/style/default/default.css create mode 100755 libraries/superfish/style/white/white.css create mode 100755 libraries/superfish/superfish.js create mode 100755 libraries/superfish/supersubs.js create mode 100755 libraries/superfish/supposition.js create mode 100755 sites/default/files/.htaccess create mode 100755 sites/default/files/2024-10/slide-image-4.png create mode 100755 sites/default/files/2024-10/slide-image-5.png create mode 100755 sites/default/files/2024-10/slide-image-7.png create mode 100755 sites/default/files/AoC_Auto Street Light(1).png create mode 100755 sites/default/files/AoC_Auto Street Light(2).gif create mode 100755 sites/default/files/AoC_Auto Street Light(3).png create mode 100755 sites/default/files/AoC_Blink LED(1).jpeg create mode 100755 sites/default/files/AoC_Blink LED(2).png create mode 100755 sites/default/files/AoC_Blink LED(3).gif create mode 100755 sites/default/files/AoC_Control LED using Relay(2).png create mode 100755 sites/default/files/AoC_Control LED with Relay(1).gif create mode 100755 sites/default/files/AoC_Control LED with Relay(3).gif create mode 100755 sites/default/files/AoC_Electronic Dice (2).png create mode 100755 sites/default/files/AoC_Electronic Dice(1).png create mode 100755 sites/default/files/AoC_Electronic Dice(3).gif create mode 100755 sites/default/files/AoC_Gas Sensor(1).jpg create mode 100755 sites/default/files/AoC_Gas Sensor(4).png create mode 100755 sites/default/files/AoC_Gas senrsor(3).png create mode 100755 sites/default/files/AoC_Gas sensor(2).png create mode 100755 sites/default/files/AoC_Intruder sensor(1).png create mode 100755 sites/default/files/AoC_Intruder sensor(2).png create mode 100755 sites/default/files/AoC_Intruder sensor(3).gif create mode 100755 sites/default/files/AoC_LCD ScrollingText(1).gif create mode 100755 sites/default/files/AoC_LCD ScrollingText(2).png create mode 100755 sites/default/files/AoC_LCD ScrollingText(3).gif create mode 100755 sites/default/files/AoC_LED Control Button(1).jpg create mode 100755 sites/default/files/AoC_LED Control Button(2).gif create mode 100755 sites/default/files/AoC_LED Control Button(3).png create mode 100755 sites/default/files/AoC_LED Control Button(4).gif create mode 100755 sites/default/files/AoC_Motion senosr with alarm (4).gif create mode 100755 sites/default/files/AoC_Motion sensor with Alarm (2).gif create mode 100755 sites/default/files/AoC_Motion sensor with Alarm (3).png create mode 100755 sites/default/files/AoC_Motion sensor with Alarm (5).png create mode 100755 sites/default/files/AoC_Motion sensor with alarm(1).jpg create mode 100755 sites/default/files/AoC_RGB Temp Indicator(1).jpg create mode 100755 sites/default/files/AoC_RGB Temp Indicator(2).jpg create mode 100755 sites/default/files/AoC_RGB Temp Indicator(3).png create mode 100755 sites/default/files/AoC_RGB Temp Indicator(4).gif create mode 100755 sites/default/files/AoC_Servo Motor(2).gif create mode 100755 sites/default/files/AoC_Servo Motor(3).png create mode 100755 sites/default/files/AoC_Servo Motor(4).gif create mode 100755 sites/default/files/AoC_Therimstor Temp Display(4).gif create mode 100755 sites/default/files/AoC_Thermistor Temp Display(1).png create mode 100755 sites/default/files/AoC_Thermistor Temp Display(2).gif create mode 100755 sites/default/files/AoC_Thermistor temp Display(3).png create mode 100755 sites/default/files/AoC_servo motor(1).jpeg create mode 100755 sites/default/files/Arduino on Cloud_Up and Down Counter(1).png create mode 100755 sites/default/files/Arduino on Cloud_Up and Down Counter(2).png create mode 100755 sites/default/files/Arduino on Cloud_Up and Down Counter.gif create mode 100755 sites/default/files/Blink_1.png create mode 100755 sites/default/files/Blink_2.png create mode 100755 sites/default/files/Blink_3.png create mode 100755 sites/default/files/Blink_4.png create mode 100755 sites/default/files/Blink_5.png create mode 100755 sites/default/files/Blink_6.png create mode 100755 sites/default/files/Blink_7.png create mode 100755 sites/default/files/E_Blink of LED.jpg create mode 100755 sites/default/files/E_Blink of LED_1.png create mode 100755 sites/default/files/E_Blink of LED_7.gif create mode 100755 sites/default/files/E_Control LED.jpg create mode 100755 sites/default/files/E_Control LED_1.gif create mode 100755 sites/default/files/E_Intruder.png create mode 100755 sites/default/files/E_Intruder_1.png create mode 100755 sites/default/files/E_Intruder_2.png create mode 100755 sites/default/files/E_Intruder_3.png create mode 100755 sites/default/files/E_Intruder_4.png create mode 100755 sites/default/files/E_Intruder_5.gif create mode 100755 sites/default/files/E_LCD 2.png create mode 100755 sites/default/files/E_LCD 3.png create mode 100755 sites/default/files/E_LCD.gif create mode 100755 sites/default/files/E_LCD_1.png create mode 100755 sites/default/files/E_LCD_2.png create mode 100755 sites/default/files/E_LCD_4.png create mode 100755 sites/default/files/E_LCD_5.gif create mode 100755 sites/default/files/E_Servo.gif create mode 100755 sites/default/files/E_Servo_1.jpg create mode 100755 sites/default/files/E_Servo_2.png create mode 100755 sites/default/files/E_Servo_3.png create mode 100755 sites/default/files/E_Servo_4.png create mode 100755 sites/default/files/E_Servo_5.png create mode 100755 sites/default/files/E_Servo_6.png create mode 100755 sites/default/files/E_Servo_7.gif create mode 100755 sites/default/files/E_Temp.jpg create mode 100755 sites/default/files/E_Temp_1.png create mode 100755 sites/default/files/E_Temp_2.png create mode 100755 sites/default/files/E_Temp_3.png create mode 100755 sites/default/files/LED_Pushbutton_1.png create mode 100755 sites/default/files/LED_Pushbutton_10.png create mode 100755 sites/default/files/LED_Pushbutton_11.png create mode 100755 sites/default/files/LED_Pushbutton_12.png create mode 100755 sites/default/files/LED_Pushbutton_13.png create mode 100755 sites/default/files/LED_Pushbutton_14.gif create mode 100755 sites/default/files/LED_Pushbutton_2.png create mode 100755 sites/default/files/LED_Pushbutton_3.png create mode 100755 sites/default/files/LED_Pushbutton_4.png create mode 100755 sites/default/files/LED_Pushbutton_5.png create mode 100755 sites/default/files/LED_Pushbutton_6.png create mode 100755 sites/default/files/LED_Pushbutton_7.png create mode 100755 sites/default/files/LED_Pushbutton_8.png create mode 100755 sites/default/files/LED_Pushbutton_9.png create mode 100755 sites/default/files/SC_logo.png create mode 100755 sites/default/files/SC_logo1.png create mode 100755 sites/default/files/SC_logo1_0.png create mode 100755 sites/default/files/advagg_in3idD6G create mode 100755 sites/default/files/advagg_inJESXzK create mode 100755 sites/default/files/advagg_inj3JTS2 create mode 100755 sites/default/files/advagg_inlDQuaI create mode 100755 sites/default/files/advagg_out3EBzd9 create mode 100755 sites/default/files/advagg_outKuagXq create mode 100755 sites/default/files/advagg_outgWWAKP create mode 100755 sites/default/files/advagg_outrwR7NB create mode 100755 sites/default/files/color/responsive-4816eefb/colors.css create mode 100755 sites/default/files/color/responsive-4816eefb/logo.png create mode 100755 sites/default/files/config_vq1B607jBFA3Twi2DHiSFERzkR5tSP9zI4_ngAhzP3lfeMD8Cv1ZBvE9iEhxX0iknVTUYS_9EQ/sync/.htaccess create mode 100755 sites/default/files/config_vq1B607jBFA3Twi2DHiSFERzkR5tSP9zI4_ngAhzP3lfeMD8Cv1ZBvE9iEhxX0iknVTUYS_9EQ/sync/README.txt create mode 100755 sites/default/files/favicon.ico create mode 100755 sites/default/files/fevicon.png create mode 100755 sites/default/files/fevicon1.png create mode 100755 sites/default/files/fevicon_1.png create mode 100755 sites/default/files/fevicon_1_0.png create mode 100755 sites/default/files/fossee_logo.png create mode 100755 sites/default/files/gas sesnor.gif create mode 100755 sites/default/files/google_tag/google_tag.data_layer.js create mode 100755 sites/default/files/google_tag/google_tag.noscript.js create mode 100755 sites/default/files/google_tag/google_tag.script.js create mode 100755 sites/default/files/left-img.png create mode 100755 sites/default/files/logo-floss-arduino-web.png create mode 100755 sites/default/files/logo-floss-arduino-web_0.png create mode 100755 sites/default/files/logo-floss-arduino-web_1.png create mode 100755 sites/default/files/logo-floss-arduino-web_1_2.png create mode 100755 sites/default/files/logo.png create mode 100644 sites/default/files/ohw-logo-website.png create mode 100755 sites/default/files/openplc_logo.png create mode 100644 sites/default/files/php/twig/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.appearance.html.twig_iDo53HNTgwmKNpHmU6ncbfvJ6/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.appearance.html.twig_iDo53HNTgwmKNpHmU6ncbfvJ6/nlreqouoJPBD-By-iCjG8k0xLth19m0xvFBh7rnFHfw.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.config_overview.html_uMMJ1rl71kngA_ekZUeGe56lc/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.config_overview.html_uMMJ1rl71kngA_ekZUeGe56lc/lVkrIZKSaes7BzvgYBQyozI1wQHU_EaCCtKUGXeHHl8.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.content_structure.ht_sgIjzDayV1GzWFj-nUQYGMojZ/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.content_structure.ht_sgIjzDayV1GzWFj-nUQYGMojZ/paYjvO4dwHzHHBGdcQpNPfWMVNCDbAQStCGnpYkU99w.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.cron.html.twig_KrVwBPmyUncFqucr4FDu04OMH/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.cron.html.twig_KrVwBPmyUncFqucr4FDu04OMH/bkFeU2j_02ju_mwa5BDCijxl-qdl-5-o1P2Y_IXjdGY.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.extending.html.twig_-IGl7-LKw_2HOZOJ8UGwlhwDl/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.extending.html.twig_-IGl7-LKw_2HOZOJ8UGwlhwDl/ImcpACEsACDKdEHhlFIuEiYMhnwZtM3SNABRdpnDVQU.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.maintenance.html.twi_9p81DlO_EjhVN1N10saLshQMx/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.maintenance.html.twi_9p81DlO_EjhVN1N10saLshQMx/dJFryDnCSMlzxCDnLARFKS6TrBNq02_YPqLTUXvGXUk.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.media.html.twig_RLlreiFpKPKMOIcvdHRt9Z9N4/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.media.html.twig_RLlreiFpKPKMOIcvdHRt9Z9N4/xwx8kl0jpZ9VPRiv8uGLtxqTNFBp2LICGO97dIlxEGE.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.menus.html.twig_AXUPamaO-menmdYDt6gTnVBGU/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.menus.html.twig_AXUPamaO-menmdYDt6gTnVBGU/1o3cQNnDz7Nyhrs9TPckO-is8xy3bzbz_BqCi5AdQEs.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.performance.html.twi_rb1NfLWfqGg_JTE-onCj8aJSl/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.performance.html.twi_rb1NfLWfqGg_JTE-onCj8aJSl/7baO-c0TgqEghW7diU-8n1r-NL4k5vQTEIgERV-fT2Y.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.security.html.twig_tesUyjitgD87ZuzFLL07DJyl0/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.security.html.twig_tesUyjitgD87ZuzFLL07DJyl0/Knvxq_A08KolTRnLYLg7AKoIQq62xEuJF9LFIBSePBo.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.settings_tray.html.t_SNvbv7lFHyt4IsNPQMIvvKJPP/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.settings_tray.html.t_SNvbv7lFHyt4IsNPQMIvvKJPP/N0tbidQJF8RzwZ5_a2SoNHDM1B6mN1uLGUB8g5XXY-c.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.tracking_content.htm_-_DfaqSrZnYQlm0q9buMHUL3l/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.tracking_content.htm_-_DfaqSrZnYQlm0q9buMHUL3l/msrkCJeon7KBOL7x3AwB5X-vrWFEYq3YC3OK0szPKm8.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.translations.html.tw_MnEOJSE4eCU0EP5nwb4TsulPD/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.translations.html.tw_MnEOJSE4eCU0EP5nwb4TsulPD/SD7MMjZKAONB55NzUEkVl0QPOQQGtKysh6RCv1jaE20.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.ui_accessibility.htm_zrVzgSM-diM71g_nZI_bk1L5D/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.ui_accessibility.htm_zrVzgSM-diM71g_nZI_bk1L5D/ah-LRtnR6f3i_i6EDwII33eb8vqLp66aMFv-8MkxfwI.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.ui_components.html.t_e4F_asDVXMf5xzET1rUKPxd-9/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.ui_components.html.t_e4F_asDVXMf5xzET1rUKPxd-9/c7s1ZXeE-4BqBDY5uPsHwbQUtZqArWtmUSC2arbSROw.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.web_services.html.tw_KHOgovWSnnz94wv8h4zlZcfU6/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_core.web_services.html.tw_KHOgovWSnnz94wv8h4zlZcfU6/yKoB86X5UyJpXTDDY9tkf16dW3UKICXR4pv8FX8b1lE.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_help.overview.html.twig_2TGsBLKtdbkzSJ2pw1UCqzWB7/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_help.overview.html.twig_2TGsBLKtdbkzSJ2pw1UCqzWB7/j95BvAbXYx8dpkgy7WZIgZ6enRWRELrY0QEpvEE-rvs.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_history.tracking_user_con_DfvZzjJLd1lG7GclorFQbI7YJ/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_history.tracking_user_con_DfvZzjJLd1lG7GclorFQbI7YJ/y56jEpt3QLdXAgd2He6F7Bzj58rYYS11sheAPO7h0cs.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_system.maintenance_mode.h_9vB4UVCqlat2m67imMuoa8tq6/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_system.maintenance_mode.h_9vB4UVCqlat2m67imMuoa8tq6/XfB_iQ4Z_KhUq8r8QwaXgMcHRAv_VJ5_ctCxaclo5pc.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_system.module_install.htm_RKRLC8Yk62ntKbgXRH7zEOWaw/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_system.module_install.htm_RKRLC8Yk62ntKbgXRH7zEOWaw/iaqJX_bYPmjZlS1h4AJ1BMDHzslcAkexJ83OMw2UjpA.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_system.reports.html.twig_3uqFsKJ516U3RB74XOEebmnhb/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_system.reports.html.twig_3uqFsKJ516U3RB74XOEebmnhb/745z83OPeUJ3DBEWNlHh5U-HE-qqkOtuWut8ksh2AJ4.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_system.theme_uninstall.ht_w1neBxxQOy-AViSETiqiTXWgE/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_system.theme_uninstall.ht_w1neBxxQOy-AViSETiqiTXWgE/ZKptziiAidJJblGyx-5resy_lhLyp9l2hOz1pB_sIgQ.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_taxonomy.configuring.html_RUgYf6Sgu9PQLLgE6Fai0dMkh/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_taxonomy.configuring.html_RUgYf6Sgu9PQLLgE6Fai0dMkh/rp1R8ICUzjTcCj7zPJO6AQJLz5PILLjv3uvo-8oa8WA.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_taxonomy.overview.html.tw_96cvV4_6KA1pLK4CDV25DzyX5/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_taxonomy.overview.html.tw_96cvV4_6KA1pLK4CDV25DzyX5/s_obThe2h3SvCxMhh-OLhyfRxGNn2CiPSx2zf9-K7Q0.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_tour.overview.html.twig_FrwOI5NgI1AGpukXgESgHOGA6/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_tour.overview.html.twig_FrwOI5NgI1AGpukXgESgHOGA6/DLJ2mJ7XFvP2chI3SflyDbScfUut1ydtuR-Mxloq34Y.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_user.create.html.twig_HV45MnyE42ib7birLxe_Wx1iR/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_user.create.html.twig_HV45MnyE42ib7birLxe_Wx1iR/CMn2XE-IRH7rUYQpQLHtIfi-hyZ7PU5oFNEcmY0KogA.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_user.new_role.html.twig_jTTPEnKkj-s1H0mewhxi63dCm/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_user.new_role.html.twig_jTTPEnKkj-s1H0mewhxi63dCm/1aKQjdRmX8EK1EozM1lmuErHOPW4R7fmRdMRc1OeCCM.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_user.overview.html.twig_2PT9d_ifC3eLul396-z5LKrKD/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_user.overview.html.twig_2PT9d_ifC3eLul396-z5LKrKD/l_vpWuL2L82MnaVzvpIXPo4r9fczZjwGOBXNdE5b2E0.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_user.permissions.html.twi_t-hmMEmUzo5bHdBr2DAim67ta/-bja31iJ-d92BrAcjomaGEmR7SYPd0BxzDSZRTn4qco.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_user.permissions.html.twi_t-hmMEmUzo5bHdBr2DAim67ta/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_user.security_account_set_QrKF1hHq5xBzXih0IyfldXCwB/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_user.security_account_set_QrKF1hHq5xBzXih0IyfldXCwB/0e0UpcB6ot2JRRjKSJ7kj4iDalnSqVCUrHv3xFj7WFM.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_user.update.html.twig_TbO6PtthPi6bOPohgzW2msMVX/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_user.update.html.twig_TbO6PtthPi6bOPohgzW2msMVX/FUcFhwuT9FgINNxm-_eWXQRTZVD6DKZQH70F1hBYvw8.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_views.overview.html.twig_j67KQAc_5VZmV-Ic8PBYIIuVo/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_views.overview.html.twig_j67KQAc_5VZmV-Ic8PBYIIuVo/NYQijdQk2kuEgf3yqgnepBBgaoc8W02udr8BtMQPj4I.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_views_ui.add_display.html_xgMdlEpZetNzwWSnBzu5OQO_k/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_views_ui.add_display.html_xgMdlEpZetNzwWSnBzu5OQO_k/OR4pyZhqPNomW3psFxv7gcujRqtg4GLh5PXDpKMUQlA.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_views_ui.bulk_operations._kG8ctvtOcMJ5AVBAanKe1j4Dd/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_views_ui.bulk_operations._kG8ctvtOcMJ5AVBAanKe1j4Dd/mpzff6ATSzH8mlXaM2J29wWgdwPHDNZuRZDyFcOBkaI.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_views_ui.create.html.twig_LTH0kE2Wd_cilbR4YPmOdKaeQ/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_views_ui.create.html.twig_LTH0kE2Wd_cilbR4YPmOdKaeQ/DKeE0Wler1jSnLiTyzT21ib2SFTpewhsmMgLR_J-u1g.php create mode 100644 sites/default/files/php/twig/67179c1d1239e_views_ui.edit.html.twig_cvBRjTwV_8xKxsDAXQZNCwNuK/.htaccess create mode 100644 sites/default/files/php/twig/67179c1d1239e_views_ui.edit.html.twig_cvBRjTwV_8xKxsDAXQZNCwNuK/_DtGKHLRwmWm7DDGsOV3orP4ilp9qvNzj795nygdncA.php create mode 100644 sites/default/files/php/twig/67188e0c79351___string_template__d7d7f1_vvT2EC-PuZA_vUKFmD1iWDFnu/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351___string_template__d7d7f1_vvT2EC-PuZA_vUKFmD1iWDFnu/4j-t7bgJ2QEqxp1UCx3UyxNU7hIpx_qtRhcbiuaq7M8.php create mode 100644 sites/default/files/php/twig/67188e0c79351_big-pipe-interface-previe_5Qr7ePDEBOtyaqHeZmstYjV0m/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_big-pipe-interface-previe_5Qr7ePDEBOtyaqHeZmstYjV0m/vrfQQBQ-9U8Vw88CWdR_ah2z8mEBQQTIwPVoV_gIgEw.php create mode 100644 sites/default/files/php/twig/67188e0c79351_block--search-form-block._gVRmkXJ722oUAofIGOcpDCGKM/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_block--search-form-block._gVRmkXJ722oUAofIGOcpDCGKM/4P8UerSv--By5yXkCDiUNODkim8ufW3pXHMlA2JFE5s.php create mode 100644 sites/default/files/php/twig/67188e0c79351_block--system-messages-bl_yiwZAQ-Ti9n_fdcjZouIznla_/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_block--system-messages-bl_yiwZAQ-Ti9n_fdcjZouIznla_/_rHB9quny1QhtrRjU0BKfYLdmw4o5gTdCtpDakURUZI.php create mode 100644 sites/default/files/php/twig/67188e0c79351_block.html.twig_YAYM3XzP9cenFWTgfPNocOnAA/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_block.html.twig_YAYM3XzP9cenFWTgfPNocOnAA/EwT21syPY2FAFC1LRRJRCw4Dx29Qp3eDSLc2kOqZqHQ.php create mode 100644 sites/default/files/php/twig/67188e0c79351_breadcrumb.html.twig_N9Dkiycug8AxKxZVORs3l2yvU/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_breadcrumb.html.twig_N9Dkiycug8AxKxZVORs3l2yvU/tFQfu6zRTduaZlyGi4WZejRZqlj7j7ywElIvs-jPb0o.php create mode 100644 sites/default/files/php/twig/67188e0c79351_container.html.twig_-SzeH9KILNSYS1yJKyLLRnko2/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_container.html.twig_-SzeH9KILNSYS1yJKyLLRnko2/Bs9U2n47O6mPO6erdD1dsu17rTx9CRmbBVDwHuWxPo4.php create mode 100644 sites/default/files/php/twig/67188e0c79351_form-element-label.html.t_PWkHe9KF9N-6mzmt_tyR5mFhM/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_form-element-label.html.t_PWkHe9KF9N-6mzmt_tyR5mFhM/RgPw1d0MRl4J7k5TAAd3Bf91YwHfv4msOG_IE8wYeD8.php create mode 100644 sites/default/files/php/twig/67188e0c79351_form-element.html.twig_gvFTlKOoEBBmshqEHSIU5hjst/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_form-element.html.twig_gvFTlKOoEBBmshqEHSIU5hjst/6zWSmzPZBmgbF2OzGVZRpXq7kdKyMTJORuBAeOPlbjc.php create mode 100644 sites/default/files/php/twig/67188e0c79351_form.html.twig_9BmTykXxu2yz4m5T5KBP9D6ye/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_form.html.twig_9BmTykXxu2yz4m5T5KBP9D6ye/5UWpirjEJ3vc4uqh3U2bu5h1TfIK5bjuwNyuQ3eJOJY.php create mode 100644 sites/default/files/php/twig/67188e0c79351_input.html.twig_Z02Cc9I4kxFem8BmBMP-If4N7/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_input.html.twig_Z02Cc9I4kxFem8BmBMP-If4N7/BHWLD5IbJOQmWKAKxiQxKLbLlL0yg1ajvSJpvrL9gLQ.php create mode 100644 sites/default/files/php/twig/67188e0c79351_links.html.twig_a_JnJcsQ3q6X2Vz6R8q691Ffq/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_links.html.twig_a_JnJcsQ3q6X2Vz6R8q691Ffq/Pn4zckaSKE1JnFo9874BPtMg6Osv1Dw4m8tBqp7xOGQ.php create mode 100644 sites/default/files/php/twig/67188e0c79351_menu--toolbar.html.twig_m5eH1Vz5Z8792r-3ofQ9FmFE1/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_menu--toolbar.html.twig_m5eH1Vz5Z8792r-3ofQ9FmFE1/c8YRSj695AOtcnvy6N-QU7TxPiGg-73WNDlzPb3ACWA.php create mode 100644 sites/default/files/php/twig/67188e0c79351_off-canvas-page-wrapper.h_u1QYEKOS4DOKBBm8IZ5FBg7lb/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_off-canvas-page-wrapper.h_u1QYEKOS4DOKBBm8IZ5FBg7lb/lql_oMLT1lc1Q5QP--DXJ_y2yRs_phvpSdislav_8i0.php create mode 100644 sites/default/files/php/twig/67188e0c79351_page-title.html.twig_xf6YhWgev7YdYQvVXyMNFnX64/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_page-title.html.twig_xf6YhWgev7YdYQvVXyMNFnX64/3evZv3KwXtZCh3sy2sGT8mqwmaBqSqPKU5zIXUPN0rs.php create mode 100644 sites/default/files/php/twig/67188e0c79351_page.html.twig_b_Epx2p0RrQ9BUeYfffkyy6Ae/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_page.html.twig_b_Epx2p0RrQ9BUeYfffkyy6Ae/GYn0jyN5X0XkbRL80JKvLiAb3WccV0Ae6Wt14mCZwJQ.php create mode 100644 sites/default/files/php/twig/67188e0c79351_region.html.twig_JSu7_3q5-fwnsYpGKNB0K4BZ1/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_region.html.twig_JSu7_3q5-fwnsYpGKNB0K4BZ1/YOxkvqL_7-xchgiq9BRCz_D362__lhMrlO84mwB4zrs.php create mode 100644 sites/default/files/php/twig/67188e0c79351_toolbar.html.twig_8SlqzibJ7qXx9F16lukHeHA6x/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_toolbar.html.twig_8SlqzibJ7qXx9F16lukHeHA6x/cnlbFGoQBYCiU3itFGQ0paesYl_wQGGnGjZzSdEKqXY.php create mode 100644 sites/default/files/php/twig/67188e0c79351_username.html.twig_t8C-BuDMAzMTGgXCvXOS5thuX/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_username.html.twig_t8C-BuDMAzMTGgXCvXOS5thuX/lIEgTOsNr03WsxQZ0ENbOenxl4pe_EaSuRkKZE8VQyU.php create mode 100644 sites/default/files/php/twig/67188e0c79351_views-view-field.html.twi_Q6hS6skBVljcfeB0JRgJAakkO/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_views-view-field.html.twi_Q6hS6skBVljcfeB0JRgJAakkO/tiNmvxJL7uC3315eT9bF9fhNvlHxP1qgdVi_fuvHDwg.php create mode 100644 sites/default/files/php/twig/67188e0c79351_views-view-fields.html.tw_A1XyOIozVur6-mKqAAHU6-Frf/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_views-view-fields.html.tw_A1XyOIozVur6-mKqAAHU6-Frf/Oz-evidk2syLGp42N6jdvgsXrOGDkYQif4UWJZ52LcM.php create mode 100644 sites/default/files/php/twig/67188e0c79351_views-view-list.html.twig_5SpcVaZqe-DHiTPJG9NMO36W6/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_views-view-list.html.twig_5SpcVaZqe-DHiTPJG9NMO36W6/32dp9Ifceg2XVGbvERG-ZVDXRjUNIPywGijPTuSZhUE.php create mode 100644 sites/default/files/php/twig/67188e0c79351_views-view.html.twig_yD_TNLk_yd4jU-5fxm_rHSx3O/.htaccess create mode 100644 sites/default/files/php/twig/67188e0c79351_views-view.html.twig_yD_TNLk_yd4jU-5fxm_rHSx3O/oThCq02pYfhPnukcbNXty4Ili8skmYnTObHE1xNwkyU.php create mode 100644 sites/default/files/php/twig/67188e7262e38___string_template__15e4c2_DaRtP2Q_iqcAiFWmCogR1OQoi/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38___string_template__15e4c2_DaRtP2Q_iqcAiFWmCogR1OQoi/hCvKs6h1owpcrvDNux97_EZs4wwOgX5A_WQzm3__ppY.php create mode 100644 sites/default/files/php/twig/67188e7262e38___string_template__6c030a_p_wXdY4XTS-gwo6gRnbppe2Eg/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38___string_template__6c030a_p_wXdY4XTS-gwo6gRnbppe2Eg/mPhr3vEwVczKiyWjpr1DoVcpyIIBDGoqaeTBRSG7qw8.php create mode 100644 sites/default/files/php/twig/67188e7262e38___string_template__d7d7f1_vvT2EC-PuZA_vUKFmD1iWDFnu/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38___string_template__d7d7f1_vvT2EC-PuZA_vUKFmD1iWDFnu/YCDkCjQ9SDjxtAzCg_o0jDfIlE6Xi4p8tD_XViI7Fw0.php create mode 100644 sites/default/files/php/twig/67188e7262e38_admin-block-content.html._5xcOhLuvK2qp7tTnngBWt6tvx/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_admin-block-content.html._5xcOhLuvK2qp7tTnngBWt6tvx/le9e0hEkUJVIxWamAs92jlFetu-LN3YPsL3zDRTfon4.php create mode 100644 sites/default/files/php/twig/67188e7262e38_admin-block.html.twig__9W5d-lYzlsXDTLGx53ttZ_-T/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_admin-block.html.twig__9W5d-lYzlsXDTLGx53ttZ_-T/WI8SKLWisBxPWRD8q1JbYA3td4tpu-55s1Q0xG5h04o.php create mode 100644 sites/default/files/php/twig/67188e7262e38_admin-page.html.twig_8z2smWI88BGOL_3flmHRmnEkj/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_admin-page.html.twig_8z2smWI88BGOL_3flmHRmnEkj/Y0S5-Wh7bihK5mO7-tLrIR7YbJqtQ-m7jemExMcN8w4.php create mode 100644 sites/default/files/php/twig/67188e7262e38_big-pipe-interface-previe_5Qr7ePDEBOtyaqHeZmstYjV0m/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_big-pipe-interface-previe_5Qr7ePDEBOtyaqHeZmstYjV0m/k3WrWIT59uC-Ci_jrv6RiPng2WhM485LQ5FYfdfLUFE.php create mode 100644 sites/default/files/php/twig/67188e7262e38_block--local-actions-bloc_vlk_GohMX5HPpwqiK6YW-Wz24/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_block--local-actions-bloc_vlk_GohMX5HPpwqiK6YW-Wz24/5A0FKYN-xA7h-6L72Vy7WNdctcfZWtwLGsfbzWniuww.php create mode 100644 sites/default/files/php/twig/67188e7262e38_block--local-tasks-block._RSixOy_2t3OsJ-vDudurpjFjZ/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_block--local-tasks-block._RSixOy_2t3OsJ-vDudurpjFjZ/rjEGBSvyUbtTq0tJS13_R-yT8k7CqGPpPLh7uyJhtg4.php create mode 100644 sites/default/files/php/twig/67188e7262e38_block--openplc-branding.h_Uq89CHBSWMtzd-xmDnnM8mgYl/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_block--openplc-branding.h_Uq89CHBSWMtzd-xmDnnM8mgYl/ZXLn9smIZ0uP5yzKC-jZRz-_tuKjngmZQQ39YIZU_Js.php create mode 100644 sites/default/files/php/twig/67188e7262e38_block--system-menu-block._G5Ge-1BNQOLZj-_XFCBL8huU0/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_block--system-menu-block._G5Ge-1BNQOLZj-_XFCBL8huU0/6l56trDj-UKnA_KgcQTGE5u_Pl2LS1xBocnsNEN4TsY.php create mode 100644 sites/default/files/php/twig/67188e7262e38_block--system-messages-bl_yiwZAQ-Ti9n_fdcjZouIznla_/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_block--system-messages-bl_yiwZAQ-Ti9n_fdcjZouIznla_/RIY28buMcTngNFPiO8Kk-CadchiA3_HkQmeX8lL8fok.php create mode 100644 sites/default/files/php/twig/67188e7262e38_block.configure.html.twig_yzeaAvD7v5H6Yw1sZf5lk5JKU/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_block.configure.html.twig_yzeaAvD7v5H6Yw1sZf5lk5JKU/Mqkyp0u7q50X5kySaha4AeNk7xSujJv0W3YpIe6Nlw0.php create mode 100644 sites/default/files/php/twig/67188e7262e38_block.html.twig_YAYM3XzP9cenFWTgfPNocOnAA/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_block.html.twig_YAYM3XzP9cenFWTgfPNocOnAA/_fdtwWAFmxx6RU3fwSxP78x2IA_OvR79A8P7bV-eTp4.php create mode 100644 sites/default/files/php/twig/67188e7262e38_block.html.twig_ajq2EDoVQjrvz9UjBq7QiWjVa/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_block.html.twig_ajq2EDoVQjrvz9UjBq7QiWjVa/dCRtNWRjolk2I67IDp6OY3O3P9wB4miPKUS1bovXJp4.php create mode 100644 sites/default/files/php/twig/67188e7262e38_block.overview.html.twig_XABLJ4J68bLq2ueXRrhkheUD5/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_block.overview.html.twig_XABLJ4J68bLq2ueXRrhkheUD5/dpAMKrgHktxQoP1jqfvbjHFaZwfnjcZHD_Saq92J9To.php create mode 100644 sites/default/files/php/twig/67188e7262e38_block.place.html.twig_nM0oByDGt_G5d8znkXKVyD0qL/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_block.place.html.twig_nM0oByDGt_G5d8znkXKVyD0qL/rhQ5Cms5buBOxLouxCzCmPpEYV84mlQYemNcMumuOFI.php create mode 100644 sites/default/files/php/twig/67188e7262e38_block_content.add.html.tw_Om2CnjFVHbkcCwr-14OLehbuv/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_block_content.add.html.tw_Om2CnjFVHbkcCwr-14OLehbuv/Eq6Jm9L8ErR2mq99EsiOGzKIUpv1OzSzWvIMvgjPpac.php create mode 100644 sites/default/files/php/twig/67188e7262e38_block_content.type.html.t_zKhnxAwO84r-Duc_oxOzhxsBe/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_block_content.type.html.t_zKhnxAwO84r-Duc_oxOzhxsBe/TptPA8hPXtXIEfgYhstCa7JxVYOD-FQxEwW9PBh8lV8.php create mode 100644 sites/default/files/php/twig/67188e7262e38_book.about.html.twig_l2J0Lh0QbnF1he1L0-kgsaBwB/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_book.about.html.twig_l2J0Lh0QbnF1he1L0-kgsaBwB/_CgpCFVgD4hGH_mNb7s9eSG47N8wjDbHdRef-Zkcths.php create mode 100644 sites/default/files/php/twig/67188e7262e38_book.adding.html.twig_DJHIQJXGOkgmzTyiajwKpc_Zv/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_book.adding.html.twig_DJHIQJXGOkgmzTyiajwKpc_Zv/J5TbvngT4WyV-waM7UpNpJo4po1lkQy-zupgSrvgZgs.php create mode 100644 sites/default/files/php/twig/67188e7262e38_book.configuring.html.twi_hBoFFeGF6BgVkI_Uy1nUlZk_I/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_book.configuring.html.twi_hBoFFeGF6BgVkI_Uy1nUlZk_I/royCNc1EtDv1znsO2T6bDFsNyrzU5pbRsx3WViJxbuY.php create mode 100644 sites/default/files/php/twig/67188e7262e38_book.creating.html.twig_4D1R875Kuh6gUy33n3rQcq9-o/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_book.creating.html.twig_4D1R875Kuh6gUy33n3rQcq9-o/xKpZhTi8SZJ9ufU2I5cb-WRyJbvTyaQvh6RcmUA9Uwo.php create mode 100644 sites/default/files/php/twig/67188e7262e38_book.organizing.html.twig_ktLemmRBAVO1aD6LecuDOxzWI/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_book.organizing.html.twig_ktLemmRBAVO1aD6LecuDOxzWI/ykiRhO7K4aJGMDjNxi6Y3_eC8deL7q3Co6tK9gvFpOg.php create mode 100644 sites/default/files/php/twig/67188e7262e38_breadcrumb.html.twig_N9Dkiycug8AxKxZVORs3l2yvU/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_breadcrumb.html.twig_N9Dkiycug8AxKxZVORs3l2yvU/ZUmEqZUYO_jBLDtckgR3xHQgyw8I52KMsiibuaPnbHg.php create mode 100644 sites/default/files/php/twig/67188e7262e38_breadcrumb.html.twig_pmHkFJ4RqFTCv4ubvzdF93sgC/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_breadcrumb.html.twig_pmHkFJ4RqFTCv4ubvzdF93sgC/_CJMaL21aLwiuXu84ZhZKS1izcWD0dqcpoGOxbc8Yi8.php create mode 100644 sites/default/files/php/twig/67188e7262e38_breakpoint.overview.html._DryQ24shF54M7MkCPmuay-bVS/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_breakpoint.overview.html._DryQ24shF54M7MkCPmuay-bVS/vS3N0N9xVyXpEK66RprbPS-HxHOv-A3m96G4Ms7g7oc.php create mode 100644 sites/default/files/php/twig/67188e7262e38_comment.configuring.html._wCk5tHajUI2YDBqMFJPXFFJvt/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_comment.configuring.html._wCk5tHajUI2YDBqMFJPXFFJvt/SGHH_H8KwBWGBN6TBEj7Uf2I4tuI3lGsdBYJX4Qdkdg.php create mode 100644 sites/default/files/php/twig/67188e7262e38_comment.creating_type.htm_Gmysx-spwxLQ0_y7T4vx_cxX4/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_comment.creating_type.htm_Gmysx-spwxLQ0_y7T4vx_cxX4/fPqksBOmy8oRVUyu3CMlh7tACvxIjfykm8iBulXcXVU.php create mode 100644 sites/default/files/php/twig/67188e7262e38_comment.disabling.html.tw_muLvnkO8B8PJREMlw1385T5Rw/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_comment.disabling.html.tw_muLvnkO8B8PJREMlw1385T5Rw/g2VfQnHG3withbPJmoSd0XYQfl1cS0cxrxcC_txJ-K8.php create mode 100644 sites/default/files/php/twig/67188e7262e38_comment.moderating.html.t_n2LLDQpKKvfUa9M9dmEbIB8D_/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_comment.moderating.html.t_n2LLDQpKKvfUa9M9dmEbIB8D_/ZzDhhWhYkBMeokPdbR8s8XBfvI8-UqDjaq9c_VLwJuY.php create mode 100644 sites/default/files/php/twig/67188e7262e38_comment.overview.html.twi_AXDgY3tkrc-UnF9RYrtwwmkl1/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_comment.overview.html.twi_AXDgY3tkrc-UnF9RYrtwwmkl1/33mO3ZvL9mK7FSXZD3uwjrnXwdQkjF9CsoCoZWP0vqs.php create mode 100644 sites/default/files/php/twig/67188e7262e38_config.export_full.html.t_bvLUVuK0TOO0GhAWepOfN7apR/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_config.export_full.html.t_bvLUVuK0TOO0GhAWepOfN7apR/YkrWUkUyG1h-y7yD_G2qM6VA-4pqYhoWvDJAvSFxBfA.php create mode 100644 sites/default/files/php/twig/67188e7262e38_config.export_single.html_UTDrCNLMxmlHIjY_Y8g7oT-qa/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_config.export_single.html_UTDrCNLMxmlHIjY_Y8g7oT-qa/z2kf7EosFx_jCMUBRiWXWUX2qBPc2wsXdFXO1S95QQw.php create mode 100644 sites/default/files/php/twig/67188e7262e38_config.import_full.html.t_r-lSo5LpDPhTD18CO2TIzi7ay/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_config.import_full.html.t_r-lSo5LpDPhTD18CO2TIzi7ay/OA2XK9so5qLNrmgXIywZrtpX7um4pz9FJc5oYUDBW_0.php create mode 100644 sites/default/files/php/twig/67188e7262e38_config.import_single.html_DUe8F6W2UzHtigGu8FqvHAtID/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_config.import_single.html_DUe8F6W2UzHtigGu8FqvHAtID/QZ_ZTGOXTyksxIGhYJeJHAnmJB3ATPuDW0VRQJL1RoA.php create mode 100644 sites/default/files/php/twig/67188e7262e38_contact.adding_fields.htm_8UeFrRARpbMiahoKPc7xRCpD-/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_contact.adding_fields.htm_8UeFrRARpbMiahoKPc7xRCpD-/iHx7Lx3-tj0zn7lbQ_nIRmV9YTdT53qj3hnWTIKvkB4.php create mode 100644 sites/default/files/php/twig/67188e7262e38_contact.configuring_perso_V1RejYe7-E0TjIIgBz6hA7cJm/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_contact.configuring_perso_V1RejYe7-E0TjIIgBz6hA7cJm/_2WHcBrwH3NKod9obcOlbCULxaxo5JQ4zHq3iC0ppfs.php create mode 100644 sites/default/files/php/twig/67188e7262e38_contact.creating.html.twi_0OiAmF8kgesz2N6fZLZ9LEa6V/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_contact.creating.html.twi_0OiAmF8kgesz2N6fZLZ9LEa6V/gb-zK1AHQfCSCllfDPvMSyIDbC7yjJg4ul62An4Aoy0.php create mode 100644 sites/default/files/php/twig/67188e7262e38_contact.overview.html.twi_uAiWUOmI904WntoCQ1sPgBfa6/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_contact.overview.html.twi_uAiWUOmI904WntoCQ1sPgBfa6/BkL_DhpZimm4FIptfsJJ3VRG2yMUOCFnAAgBxHsoHV0.php create mode 100644 sites/default/files/php/twig/67188e7262e38_contact.setting_default.h_1F68BfcXMzkoEobcjjC3fvPnK/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_contact.setting_default.h_1F68BfcXMzkoEobcjjC3fvPnK/1x6SnnSLmCFscGmCZishbxkZRC8gmEJVsSwBuk4hLF0.php create mode 100644 sites/default/files/php/twig/67188e7262e38_container.html.twig_-SzeH9KILNSYS1yJKyLLRnko2/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_container.html.twig_-SzeH9KILNSYS1yJKyLLRnko2/r4wdv4dj4uZcwJVIl58XhMU0froS4oFZjUlyfck12Tg.php create mode 100644 sites/default/files/php/twig/67188e7262e38_contextual.overview.html._A8zZNsE3F-IL6BdTiQbxulXDp/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_contextual.overview.html._A8zZNsE3F-IL6BdTiQbxulXDp/T4X3JODKxReD7jN6r5JoQa_ioaHeIDb25a-rxgi-C1w.php create mode 100644 sites/default/files/php/twig/67188e7262e38_core.appearance.html.twig_iDo53HNTgwmKNpHmU6ncbfvJ6/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_core.appearance.html.twig_iDo53HNTgwmKNpHmU6ncbfvJ6/paCfHX60uziLUynakApnjcvOm13baUOUEVESM9zzjWA.php create mode 100644 sites/default/files/php/twig/67188e7262e38_core.config_overview.html_uMMJ1rl71kngA_ekZUeGe56lc/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_core.config_overview.html_uMMJ1rl71kngA_ekZUeGe56lc/GxUnY4_v0EuWy3YkEQzEIH9EOwXml2AetZMRFVDe1hA.php create mode 100644 sites/default/files/php/twig/67188e7262e38_core.content_structure.ht_sgIjzDayV1GzWFj-nUQYGMojZ/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_core.content_structure.ht_sgIjzDayV1GzWFj-nUQYGMojZ/hPNArAsxRCX5ARow2dxYWSweI4fUEftcTCenJhFLaWg.php create mode 100644 sites/default/files/php/twig/67188e7262e38_core.cron.html.twig_KrVwBPmyUncFqucr4FDu04OMH/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_core.cron.html.twig_KrVwBPmyUncFqucr4FDu04OMH/IJtwF3XetUKbMDrwDxH0VmS9B7K7LnM4IEpmIBSA9bY.php create mode 100644 sites/default/files/php/twig/67188e7262e38_core.extending.html.twig_-IGl7-LKw_2HOZOJ8UGwlhwDl/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_core.extending.html.twig_-IGl7-LKw_2HOZOJ8UGwlhwDl/XP87v0OK7J8wEZEp3GuJWs4l3w0kmjGtbTybt5Hr0BM.php create mode 100644 sites/default/files/php/twig/67188e7262e38_core.maintenance.html.twi_9p81DlO_EjhVN1N10saLshQMx/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_core.maintenance.html.twi_9p81DlO_EjhVN1N10saLshQMx/stC5pAY5snOcCNpdlm9-keXg18mR9poO9XPOpJIKZJQ.php create mode 100644 sites/default/files/php/twig/67188e7262e38_core.media.html.twig_RLlreiFpKPKMOIcvdHRt9Z9N4/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_core.media.html.twig_RLlreiFpKPKMOIcvdHRt9Z9N4/twEcUclaxwtpfJ4mLyiPjWVklLM92jtlry2tsKauthU.php create mode 100644 sites/default/files/php/twig/67188e7262e38_core.menus.html.twig_AXUPamaO-menmdYDt6gTnVBGU/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_core.menus.html.twig_AXUPamaO-menmdYDt6gTnVBGU/rjmcQLydPbBwZ70qTSADN-1Ygf3mZVUlzEXKcaqZios.php create mode 100644 sites/default/files/php/twig/67188e7262e38_core.performance.html.twi_rb1NfLWfqGg_JTE-onCj8aJSl/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_core.performance.html.twi_rb1NfLWfqGg_JTE-onCj8aJSl/mGLm59gZiQfJivZknTNuLSYcdjQWii_33FMOiXNwFLU.php create mode 100644 sites/default/files/php/twig/67188e7262e38_core.security.html.twig_tesUyjitgD87ZuzFLL07DJyl0/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_core.security.html.twig_tesUyjitgD87ZuzFLL07DJyl0/yuuEjfOf5HgSPmpnwCeYwx61v3cBWxZeFsIVxHZn7QU.php create mode 100644 sites/default/files/php/twig/67188e7262e38_core.settings_tray.html.t_SNvbv7lFHyt4IsNPQMIvvKJPP/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_core.settings_tray.html.t_SNvbv7lFHyt4IsNPQMIvvKJPP/wQv1jVU5C2q87wmTXXcBvO3k8bsqtaR6sl5-DdxYRwA.php create mode 100644 sites/default/files/php/twig/67188e7262e38_core.tracking_content.htm_-_DfaqSrZnYQlm0q9buMHUL3l/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_core.tracking_content.htm_-_DfaqSrZnYQlm0q9buMHUL3l/JzbBtH6rHmyjlYfuunhtQFwX9UqaS4PvAOcVdnuhkr8.php create mode 100644 sites/default/files/php/twig/67188e7262e38_core.translations.html.tw_MnEOJSE4eCU0EP5nwb4TsulPD/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_core.translations.html.tw_MnEOJSE4eCU0EP5nwb4TsulPD/B_ahhv5ztr2CxJyAGVyea3UZdkZ9Pad_B2AvRLs8D6Y.php create mode 100644 sites/default/files/php/twig/67188e7262e38_core.ui_accessibility.htm_zrVzgSM-diM71g_nZI_bk1L5D/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_core.ui_accessibility.htm_zrVzgSM-diM71g_nZI_bk1L5D/o-NvoykG0wh_njDDk5vOGVpIuEdvbO2Tgj-bn9CNIR0.php create mode 100644 sites/default/files/php/twig/67188e7262e38_core.ui_components.html.t_e4F_asDVXMf5xzET1rUKPxd-9/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_core.ui_components.html.t_e4F_asDVXMf5xzET1rUKPxd-9/mAVQ-8UDS56qxWRV2Ni9e26qNtQeFC21TpPSQQq6a_k.php create mode 100644 sites/default/files/php/twig/67188e7262e38_core.web_services.html.tw_KHOgovWSnnz94wv8h4zlZcfU6/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_core.web_services.html.tw_KHOgovWSnnz94wv8h4zlZcfU6/oiLlyZXqOA5Jnjmn_LtAV8Dpf_-PMZqLMr6_w8EMKh4.php create mode 100644 sites/default/files/php/twig/67188e7262e38_datetime-form.html.twig_h2eV8cGcURyDmpcjKfYGIvTSG/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_datetime-form.html.twig_h2eV8cGcURyDmpcjKfYGIvTSG/rP0oAKSGeWmz3pDWffSljQH5D2fIkavs1WBySJYfqbU.php create mode 100644 sites/default/files/php/twig/67188e7262e38_datetime-wrapper.html.twi_aNJ5baRgXOTRWIE63SWzfsfrO/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_datetime-wrapper.html.twi_aNJ5baRgXOTRWIE63SWzfsfrO/a2ByIZGfrn1NG6tuYXAn-kJmgFFG2BruDgGWDipPRn4.php create mode 100644 sites/default/files/php/twig/67188e7262e38_details.html.twig_MRN2TJlIy5REfJt73phITYUgi/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_details.html.twig_MRN2TJlIy5REfJt73phITYUgi/4jLVM_9-I5saZLb662_7lHzv8nQuNd243kQHzzLESvM.php create mode 100644 sites/default/files/php/twig/67188e7262e38_dropbutton-wrapper.html.t_mTg50r2-dEAiSpfbFXPxtstZO/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_dropbutton-wrapper.html.t_mTg50r2-dEAiSpfbFXPxtstZO/As5UZEu7UEBb82UDYPpuPN0nvs4Fv1WZzUTIYYkpeqg.php create mode 100644 sites/default/files/php/twig/67188e7262e38_editor.overview.html.twig_DioeEtfl2wB8Zhfw2ZRN0BlSM/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_editor.overview.html.twig_DioeEtfl2wB8Zhfw2ZRN0BlSM/b8uYz16dGJcOgmcby8NnAVSP05h90YY3cIgNQXJl2Ak.php create mode 100644 sites/default/files/php/twig/67188e7262e38_field--comment.html.twig_8x0hdEBLqHuuOZ22zpP62-3VC/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_field--comment.html.twig_8x0hdEBLqHuuOZ22zpP62-3VC/qWf24rXZw0gU_K-VUg4BVyV_uTifbAJj-DsLLuK3G38.php create mode 100644 sites/default/files/php/twig/67188e7262e38_field--node--created.html_e_zUlhr1YZUszZPIWAcrQ4DdZ/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_field--node--created.html_e_zUlhr1YZUszZPIWAcrQ4DdZ/APWfPCUKr_XPxysyvXAV1XFwBZHwRwg9qh5_EjYtk4w.php create mode 100644 sites/default/files/php/twig/67188e7262e38_field--node--title.html.t_hUI-uAbJEKj8dOgLxIIE1yZU_/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_field--node--title.html.t_hUI-uAbJEKj8dOgLxIIE1yZU_/fc4Go7ZDaGtUQaaz15ePRJ4B3e_UPuwCsUOpkjZpJY4.php create mode 100644 sites/default/files/php/twig/67188e7262e38_field--node--uid.html.twi_smvLcGQH36v6X4A1o7IzZ-28E/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_field--node--uid.html.twi_smvLcGQH36v6X4A1o7IzZ-28E/aoSpFWm8Vni0A6dCN8Q5H-uD-H6OPxpTNPCgC1ftoFo.php create mode 100644 sites/default/files/php/twig/67188e7262e38_field.html.twig_JjlbGBvXO910cefa7H-V2GNOi/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_field.html.twig_JjlbGBvXO910cefa7H-V2GNOi/5vlEhybIwfBE9_9Tm4uQ037TsgrYmr662SFOXkR1j50.php create mode 100644 sites/default/files/php/twig/67188e7262e38_field_ui.add_field.html.t_naTFNgmOxUmx7cqtdCMjYrOYc/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_field_ui.add_field.html.t_naTFNgmOxUmx7cqtdCMjYrOYc/CRr_1eUgReEageBBzhEcHI6yk_35WkoFanXZmn614mQ.php create mode 100644 sites/default/files/php/twig/67188e7262e38_field_ui.manage_display.h_jJm6I3949pXjio2xyaQoqdmRl/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_field_ui.manage_display.h_jJm6I3949pXjio2xyaQoqdmRl/0t0_YRO1R0BVgkK7qhZ6rFKgSOdccubL7be6ItShQLk.php create mode 100644 sites/default/files/php/twig/67188e7262e38_field_ui.manage_form.html_TolpllKcT1ghL-fgwvdclIcRV/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_field_ui.manage_form.html_TolpllKcT1ghL-fgwvdclIcRV/Ft_RrguYAUg-b1Q7RCGlGX5Zgg6pDrgMulag2cVwVFo.php create mode 100644 sites/default/files/php/twig/67188e7262e38_field_ui.reference_field._xZy4F-dUsluUAWbBt_g9JyzLZ/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_field_ui.reference_field._xZy4F-dUsluUAWbBt_g9JyzLZ/8lA1JPh6LrEj5jX4gRiteXyK3g8cjuBacbn-rXzO4H4.php create mode 100644 sites/default/files/php/twig/67188e7262e38_fieldset.html.twig_Gnv8FLr_pv-j9fxqsl3E5JOdI/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_fieldset.html.twig_Gnv8FLr_pv-j9fxqsl3E5JOdI/dN4UtWL-8SfMVlQF1fk6ZbxCb6Rzxr0xCeAnLfCb9ZE.php create mode 100644 sites/default/files/php/twig/67188e7262e38_filter.overview.html.twig_13sQGMcUyNFl1Udsz9b4rH96O/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_filter.overview.html.twig_13sQGMcUyNFl1Udsz9b4rH96O/6Ejg3lvqufxY_-Ogad0Y0sua464mYP7vCZnPzyuBxbw.php create mode 100644 sites/default/files/php/twig/67188e7262e38_flexslider-list-item.html_tLXUXeIk_MK6BYIdVjmnitc_8/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_flexslider-list-item.html_tLXUXeIk_MK6BYIdVjmnitc_8/0K9X_GEeKJnkLoaKpe7xbp5uOghbeDMtygIY4qdL7tI.php create mode 100644 sites/default/files/php/twig/67188e7262e38_flexslider-list.html.twig_PvSz5HBmzMFLZwIu87k3oTpKy/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_flexslider-list.html.twig_PvSz5HBmzMFLZwIu87k3oTpKy/rD2nQuOpXEyaZVqAaXj-cT-Fejb9_F5zFyP91EWJH0k.php create mode 100644 sites/default/files/php/twig/67188e7262e38_flexslider-views-style.ht_PzTcSpQn9cMc-M-wDamrYZTGs/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_flexslider-views-style.ht_PzTcSpQn9cMc-M-wDamrYZTGs/Tvxa6WlHJCHGodQyv5-ETuYG_9PYKFTuNnLb1z7BQpY.php create mode 100644 sites/default/files/php/twig/67188e7262e38_flexslider.html.twig_L_GLcfGxfeNo1RIqWpgd-EhGs/-zHGLK90AApgWCQtKtAgebye8bE2snyMWYfWueptZtk.php create mode 100644 sites/default/files/php/twig/67188e7262e38_flexslider.html.twig_L_GLcfGxfeNo1RIqWpgd-EhGs/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_form-element-label.html.t_PWkHe9KF9N-6mzmt_tyR5mFhM/-6U3bRvSy2vrKAxoLfxBDYDPvRsBHrpXVXhCPPJJJac.php create mode 100644 sites/default/files/php/twig/67188e7262e38_form-element-label.html.t_PWkHe9KF9N-6mzmt_tyR5mFhM/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_form-element-label.html.t_dwM9gWwZ4_FJDi_wiRcMpFl3a/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_form-element-label.html.t_dwM9gWwZ4_FJDi_wiRcMpFl3a/BhFnf_o6ftR2u2WecPL9cUZUojIZQ_R07PO18oiELnY.php create mode 100644 sites/default/files/php/twig/67188e7262e38_form-element.html.twig_gvFTlKOoEBBmshqEHSIU5hjst/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_form-element.html.twig_gvFTlKOoEBBmshqEHSIU5hjst/yRtFTCDoyEfffYb2L2YWgh-zTPPkgTZ3xW1e7omtrs0.php create mode 100644 sites/default/files/php/twig/67188e7262e38_form-element.html.twig_hA9vdiMuCIfr4qPjnaVszDcT7/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_form-element.html.twig_hA9vdiMuCIfr4qPjnaVszDcT7/jrxVFFEy9To6SZZpdWE-utRd_6pSmiMrd02vdjFFHGU.php create mode 100644 sites/default/files/php/twig/67188e7262e38_form.html.twig_9BmTykXxu2yz4m5T5KBP9D6ye/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_form.html.twig_9BmTykXxu2yz4m5T5KBP9D6ye/xqT_8lvnztXIVCrSxaiFX41NmmUGabcuO3cfArFgP9w.php create mode 100644 sites/default/files/php/twig/67188e7262e38_help.help_topic_search.ht_nEdElFB9wbYFW7YCO4GnwN73S/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_help.help_topic_search.ht_nEdElFB9wbYFW7YCO4GnwN73S/PZntAIdjbVSHMbYy_D8a9QiG-fXiCG4XOJjGHn8yO_M.php create mode 100644 sites/default/files/php/twig/67188e7262e38_help.overview.html.twig_2TGsBLKtdbkzSJ2pw1UCqzWB7/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_help.overview.html.twig_2TGsBLKtdbkzSJ2pw1UCqzWB7/mwF4H3VAX9MJK9goBLaneG_soai6j2G7eek0c2t9d-c.php create mode 100644 sites/default/files/php/twig/67188e7262e38_history.tracking_user_con_DfvZzjJLd1lG7GclorFQbI7YJ/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_history.tracking_user_con_DfvZzjJLd1lG7GclorFQbI7YJ/piaQmyNHQ9iZOao3cWBBLFmMJT-QPNxHFr9bH4mSZjQ.php create mode 100644 sites/default/files/php/twig/67188e7262e38_html.html.twig_1-45Rt_SmlsDAME86-ZSvGtop/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_html.html.twig_1-45Rt_SmlsDAME86-ZSvGtop/3s-BvrqR7brg3vlGxxMIjTbuYF-v8ZIyTi5ShtJ4yGU.php create mode 100644 sites/default/files/php/twig/67188e7262e38_html.html.twig_13eepgMbPcpF2aNwb_OuM_m7p/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_html.html.twig_13eepgMbPcpF2aNwb_OuM_m7p/RSwTzYWdLycoSCK3NCDETBdOfuldvy6oT9eFEJ0jp1w.php create mode 100644 sites/default/files/php/twig/67188e7262e38_image-formatter.html.twig_HK52n3L6Je8YuprHKcvrjcRo2/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_image-formatter.html.twig_HK52n3L6Je8YuprHKcvrjcRo2/lOfrSdKIVCEcKRlXfrL4-wS-nzJYGITCC7rqPAQfwqA.php create mode 100644 sites/default/files/php/twig/67188e7262e38_image-resize-summary.html_QhL-50nRbIMvuTSkKVNNSWWDi/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_image-resize-summary.html_QhL-50nRbIMvuTSkKVNNSWWDi/upaPWeYIOj7CqSteOdQbu_8zb8-gbeoNJYC09QF4Gvg.php create mode 100644 sites/default/files/php/twig/67188e7262e38_image-style-preview.html._T3hcQxdG4HHuX_RxRQSDrl3Xa/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_image-style-preview.html._T3hcQxdG4HHuX_RxRQSDrl3Xa/AtXkX1kA4l8cH0OZomIYbci4MDRdhB4ikSysADAbudg.php create mode 100644 sites/default/files/php/twig/67188e7262e38_image-style.html.twig_O23BH7FoJXXh8wlLLJGF8ZHQJ/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_image-style.html.twig_O23BH7FoJXXh8wlLLJGF8ZHQJ/GqqSk_CvJlqsXg186qdS9rcAblp9SurbNqKq5F0szko.php create mode 100644 sites/default/files/php/twig/67188e7262e38_image.html.twig_gHfwF7bTGxXBevBDNwv4vfxeM/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_image.html.twig_gHfwF7bTGxXBevBDNwv4vfxeM/E8W6iMOMUnkLP4q-A6fRLDLgBi-xk7nxLudfjVuqc8E.php create mode 100644 sites/default/files/php/twig/67188e7262e38_image.html.twig_xUrp5JqxC6NKpMfOJLmFNZPFa/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_image.html.twig_xUrp5JqxC6NKpMfOJLmFNZPFa/Ik72ai1ujNr5dFwFjt97KKueXQiYYcrZ1yv4wkWIfps.php create mode 100644 sites/default/files/php/twig/67188e7262e38_image.style.html.twig_xP151GbJS28w2cTQLAi7XseBt/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_image.style.html.twig_xP151GbJS28w2cTQLAi7XseBt/5ICZHgS08mbKunvL6vIhD3WbE3KXkDjjXblt7nqVGMA.php create mode 100644 sites/default/files/php/twig/67188e7262e38_input.html.twig_Z02Cc9I4kxFem8BmBMP-If4N7/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_input.html.twig_Z02Cc9I4kxFem8BmBMP-If4N7/Eyot0VNpMyxxjiPVhOMNLvEJ0pVGF4Zt2NuXh3dUDzY.php create mode 100644 sites/default/files/php/twig/67188e7262e38_item-list.html.twig_BvepHEZyKC9-vHLjQr6FUg_eD/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_item-list.html.twig_BvepHEZyKC9-vHLjQr6FUg_eD/o6BKfXwb1c3EM4hbd35bqNEbfpc1UPa-fkuOyUrs2u8.php create mode 100644 sites/default/files/php/twig/67188e7262e38_links.html.twig_a_JnJcsQ3q6X2Vz6R8q691Ffq/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_links.html.twig_a_JnJcsQ3q6X2Vz6R8q691Ffq/OAj4em-aH0dcu7hc0yzOKQdW5jBAm5-kAL45GbZnjUg.php create mode 100644 sites/default/files/php/twig/67188e7262e38_maintenance-page.html.twi_yUPKRGEk0BNCVcvwJUojxB3e7/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_maintenance-page.html.twi_yUPKRGEk0BNCVcvwJUojxB3e7/3qcWnqYdQzfMFhpo5Gvxoqq87RSQ8agL4yZxynIxId8.php create mode 100644 sites/default/files/php/twig/67188e7262e38_media.media_type.html.twi_2fq3HC7dHD-SFohQh89aYOM3f/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_media.media_type.html.twi_2fq3HC7dHD-SFohQh89aYOM3f/DGlmfd1eLU3qLRUG7SCuTmoh4h0mNLZ4-VTFPICyvjY.php create mode 100644 sites/default/files/php/twig/67188e7262e38_menu--toolbar.html.twig_m5eH1Vz5Z8792r-3ofQ9FmFE1/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_menu--toolbar.html.twig_m5eH1Vz5Z8792r-3ofQ9FmFE1/tUo8O43tInav5zDJ_ZL-OngqVcZY4euxEPDY_zYP7UE.php create mode 100644 sites/default/files/php/twig/67188e7262e38_menu-local-action.html.tw__Vsnn3q3zzKFdn1r-F2-6nf9D/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_menu-local-action.html.tw__Vsnn3q3zzKFdn1r-F2-6nf9D/Jq968Sp8_FeXWXHOv5wDXBTdtFnAIVN7lZUuwYVXo2U.php create mode 100644 sites/default/files/php/twig/67188e7262e38_menu-local-task.html.twig_hsspfA7w-dN47MT49FZjVT7TQ/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_menu-local-task.html.twig_hsspfA7w-dN47MT49FZjVT7TQ/mLCEPWXi8_WpSygryxALEZI8mTPC8_OGyrZ2Fabn0eE.php create mode 100644 sites/default/files/php/twig/67188e7262e38_menu-local-tasks.html.twi_KONA9l4My-QYM4GpX7uf9xZ0N/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_menu-local-tasks.html.twi_KONA9l4My-QYM4GpX7uf9xZ0N/2i6yoN2ydmeF_0Jkmb13hovpZLDX9a3g7C8OCefqvBE.php create mode 100644 sites/default/files/php/twig/67188e7262e38_menu.html.twig_cQTgGm4Sx9phDdsQfE9wDRN35/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_menu.html.twig_cQTgGm4Sx9phDdsQfE9wDRN35/O0vn9XLtzf-jlTXXyaG4iBrHDOouaI07z1tsg4Wv2FI.php create mode 100644 sites/default/files/php/twig/67188e7262e38_menu_ui.content_type_conf_pZBYB_BwfKFOIvVDo3gi3gW9e/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_menu_ui.content_type_conf_pZBYB_BwfKFOIvVDo3gi3gW9e/F1S8xiD9v_OSTWRLoYlDVNmRoGnqWnVnLCShp4QklGk.php create mode 100644 sites/default/files/php/twig/67188e7262e38_menu_ui.menu_item_add.htm_rFpaQmk1isEAIgDd-JS8S6jTo/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_menu_ui.menu_item_add.htm_rFpaQmk1isEAIgDd-JS8S6jTo/y98mIi-Zf8LDucE_6GnB5FaB3LcYxrA1fcwyXMDhgpM.php create mode 100644 sites/default/files/php/twig/67188e7262e38_menu_ui.menu_operations.h_s-jbZx65Gh8zdzdq7SSzIpLJk/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_menu_ui.menu_operations.h_s-jbZx65Gh8zdzdq7SSzIpLJk/geVaEtHo4-DLEvcOVgMu2fy97bp5thyljAgsjqUC-6A.php create mode 100644 sites/default/files/php/twig/67188e7262e38_menu_ui.overriding.html.t_MSJoG6qjMwfGx2jrtXt45BYIX/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_menu_ui.overriding.html.t_MSJoG6qjMwfGx2jrtXt45BYIX/jp5AiObtZKC2MQG7fuZX0y1fjOUd1-6-l9aii74C0FM.php create mode 100644 sites/default/files/php/twig/67188e7262e38_migrate.overview.html.twi_iS22Pw_hU4rpX0V-daAdHM5vI/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_migrate.overview.html.twi_iS22Pw_hU4rpX0V-daAdHM5vI/l6Urljs9M8Tw0S0qbPkA1jk0oV9dM9kGoH0Hk0XkdKM.php create mode 100644 sites/default/files/php/twig/67188e7262e38_migrate_drupal_ui.upgradi_hqpAaM6O_Ume3bJYrlX3UJupB/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_migrate_drupal_ui.upgradi_hqpAaM6O_Ume3bJYrlX3UJupB/TgdpgDkRlrMLennkxepyNK_UmyXrK_RLRVOKxksG5Q8.php create mode 100644 sites/default/files/php/twig/67188e7262e38_node.creating_content.htm_C9BpbNlV6ljxnzpYPztlqXICr/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_node.creating_content.htm_C9BpbNlV6ljxnzpYPztlqXICr/NCa0vPzbqQoJeI5PQ-_EC2lLowK1Q7JBfX0zW7DBM9w.php create mode 100644 sites/default/files/php/twig/67188e7262e38_node.creating_type.html.t_6LrYgZKtOvJbQSVQ6tIQSF8pp/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_node.creating_type.html.t_6LrYgZKtOvJbQSVQ6tIQSF8pp/ldO-ejXW0NGpmJONqdv6DWpq1qpwqulU2LD1Hd_gmvg.php create mode 100644 sites/default/files/php/twig/67188e7262e38_node.editing.html.twig_yjVdDl3kmoQ5h8JNLD5ZVD_er/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_node.editing.html.twig_yjVdDl3kmoQ5h8JNLD5ZVD_er/Th5l2hN0f6Ma4gFYOtO2C-rSyxyVFpYtQgRpsVws96U.php create mode 100644 sites/default/files/php/twig/67188e7262e38_node.html.twig_M2jYe9ngxbvE8Sa2BJFMsVRKi/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_node.html.twig_M2jYe9ngxbvE8Sa2BJFMsVRKi/F50dBELLsmxqqklcxA330juNZkrr2OYZVxqvCUwuDww.php create mode 100644 sites/default/files/php/twig/67188e7262e38_node.overview.html.twig_sjf66BwPvww7FKTuM6ehtgTXC/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_node.overview.html.twig_sjf66BwPvww7FKTuM6ehtgTXC/x2KgxsEDB-VGR6LVssZKjIymr1GmVkBssHnQyEm2bNE.php create mode 100644 sites/default/files/php/twig/67188e7262e38_off-canvas-page-wrapper.h_u1QYEKOS4DOKBBm8IZ5FBg7lb/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_off-canvas-page-wrapper.h_u1QYEKOS4DOKBBm8IZ5FBg7lb/2WFN-wTIU28SR-CGz6ne5iJ7UYJ__d0oKH_BqjELiXs.php create mode 100644 sites/default/files/php/twig/67188e7262e38_page--front.html.twig_zjd6bZk5MRoCEwhV8k51Mxyc9/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_page--front.html.twig_zjd6bZk5MRoCEwhV8k51Mxyc9/yC-0SwrgZhoM__o3QfpUc0FUYyiCW49MWXcH9c2nkTc.php create mode 100644 sites/default/files/php/twig/67188e7262e38_page-title.html.twig_vpIvEjRbmV7VKVYeGYEDloRtP/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_page-title.html.twig_vpIvEjRbmV7VKVYeGYEDloRtP/oLebTqZOQ4FEOYSP4ypPKG8vV8XhdEiuxVllmMq4Bf0.php create mode 100644 sites/default/files/php/twig/67188e7262e38_page-title.html.twig_xf6YhWgev7YdYQvVXyMNFnX64/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_page-title.html.twig_xf6YhWgev7YdYQvVXyMNFnX64/nki22-VloCr_0A3ADi_nLHF10lNbt5m1RBkgbzQ5n_U.php create mode 100644 sites/default/files/php/twig/67188e7262e38_page.html.twig_b_Epx2p0RrQ9BUeYfffkyy6Ae/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_page.html.twig_b_Epx2p0RrQ9BUeYfffkyy6Ae/GdlIhVbikx-fA0-4CQ3MPL_SGsXylcg2y7w2yl4URSc.php create mode 100644 sites/default/files/php/twig/67188e7262e38_page.html.twig_l-gTGXU_birUCqLDE7eoNdn3c/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_page.html.twig_l-gTGXU_birUCqLDE7eoNdn3c/XRpOjW-igqZ-8voUfATQ-YOgid6NAcmgtqubqELAzck.php create mode 100644 sites/default/files/php/twig/67188e7262e38_pager.html.twig_2Q5_ImwpDEr0moKpIHDRA4hEy/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_pager.html.twig_2Q5_ImwpDEr0moKpIHDRA4hEy/rfbUMBUAiPremAP4oTh19zwwc6AOpfxhMiZeg2HHUDI.php create mode 100644 sites/default/files/php/twig/67188e7262e38_path.creating_alias.html._YoKP19ZISs60v9QqPQEaH6ww6/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_path.creating_alias.html._YoKP19ZISs60v9QqPQEaH6ww6/DjHx4Q6GptpcnJYZKFvl_O2mNlF1dGfjTMer7ijvstg.php create mode 100644 sites/default/files/php/twig/67188e7262e38_path.editing_alias.html.t_VYWKG4aK3aOwKvUtYO8ogP3Om/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_path.editing_alias.html.t_VYWKG4aK3aOwKvUtYO8ogP3Om/IZV-A1UEUQn6guwW7KcekZcguzS3g5MlnwPu_AcyKA8.php create mode 100644 sites/default/files/php/twig/67188e7262e38_path.overview.html.twig_so82VZAL53jhBsjv5kV31ukx2/-ue9TgJj0I5-rMMk3TjEy40VE9fzd1r9-8X-7_Xoc10.php create mode 100644 sites/default/files/php/twig/67188e7262e38_path.overview.html.twig_so82VZAL53jhBsjv5kV31ukx2/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_radios.html.twig_0qx4YZTLEfSyGwV27esX_IfNN/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_radios.html.twig_0qx4YZTLEfSyGwV27esX_IfNN/Zp4j8WOB-ruE4afq0oqkHMciC0bkERobhIvPppiMpTk.php create mode 100644 sites/default/files/php/twig/67188e7262e38_region--breadcrumb.html.t_lQArGht6lTCilxUw0yco73Drk/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_region--breadcrumb.html.t_lQArGht6lTCilxUw0yco73Drk/IamCj4ZiXA1ljOsYMZo1xSBcfvBv9GeFNyr03z-PEAI.php create mode 100644 sites/default/files/php/twig/67188e7262e38_region--content.html.twig_APqCLa9NpAaZdjxPMbfpnDuvp/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_region--content.html.twig_APqCLa9NpAaZdjxPMbfpnDuvp/wkygFLVQTM-Hl3SFZApBw2BX70mB2KE0lRupZ_XWLmo.php create mode 100644 sites/default/files/php/twig/67188e7262e38_region--footer.html.twig_D9MIxACyLVtNphZ7kLR6DpeP1/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_region--footer.html.twig_D9MIxACyLVtNphZ7kLR6DpeP1/FAsmE60-BoU8casS-vrznJ3OmBFuVycq-Rk--VFl8k0.php create mode 100644 sites/default/files/php/twig/67188e7262e38_region.html.twig_JSu7_3q5-fwnsYpGKNB0K4BZ1/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_region.html.twig_JSu7_3q5-fwnsYpGKNB0K4BZ1/If1SUV6RBARnSPj8rqjWlutbGfGtqDbtw7zE4JSvIS4.php create mode 100644 sites/default/files/php/twig/67188e7262e38_region.html.twig_gcpMa833Hzs39F_rlpGDM_dgG/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_region.html.twig_gcpMa833Hzs39F_rlpGDM_dgG/WnsP9teNuIkaT9v79pefb3FHa5pv-ae01Bkm-DHyraI.php create mode 100644 sites/default/files/php/twig/67188e7262e38_search.configuring.html.t_gvupKob4CNtM7r4X33lgsAQ-2/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_search.configuring.html.t_gvupKob4CNtM7r4X33lgsAQ-2/jVsVjnW4Ti66_aOrmuvyq1J0sSEodr0Vw0Ghi3_xQTY.php create mode 100644 sites/default/files/php/twig/67188e7262e38_search.index.html.twig_-XtkFYKD-uUZq3ZQV02Or3P2s/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_search.index.html.twig_-XtkFYKD-uUZq3ZQV02Or3P2s/79DU8KxcmkgC__dVckc70PtKNyX0JTrR_StQhzFDodQ.php create mode 100644 sites/default/files/php/twig/67188e7262e38_search.overview.html.twig_XFm3VXQxtiq5sJ_LDLVUGIRZ9/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_search.overview.html.twig_XFm3VXQxtiq5sJ_LDLVUGIRZ9/50EGqUpJUkGwlGSF_rxWx8tVcaeMLhheM7XDOex8SBo.php create mode 100644 sites/default/files/php/twig/67188e7262e38_select.html.twig_Z8cuumkRzE4m2qYfYjtOA72Kh/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_select.html.twig_Z8cuumkRzE4m2qYfYjtOA72Kh/awP8niKo6kJJByA0yq_ur1Fq290C3930X9xdQGDHWLA.php create mode 100644 sites/default/files/php/twig/67188e7262e38_shortcut.overview.html.tw_Ltpm6UOwW_bq4h_dtqJYvvhSI/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_shortcut.overview.html.tw_Ltpm6UOwW_bq4h_dtqJYvvhSI/YDIxnY6em351S8cN8HMQ9T_tADt7JtsGtYPjxBMtntY.php create mode 100644 sites/default/files/php/twig/67188e7262e38_status-messages.html.twig_h4Xo30-DaqYhcwdPUOrvuxj7H/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_status-messages.html.twig_h4Xo30-DaqYhcwdPUOrvuxj7H/ifmMUn1x5Zu2DOxgqkUWFQuyCPwlU0yIy6WwhxZ9cVw.php create mode 100644 sites/default/files/php/twig/67188e7262e38_status-report-counter.htm_s8pRBNcW_tzh-abREsTa1N__L/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_status-report-counter.htm_s8pRBNcW_tzh-abREsTa1N__L/yzGpKG5MVZFRwbTWdRgogpQvmBhorl5-MJjkTEuV-hw.php create mode 100644 sites/default/files/php/twig/67188e7262e38_status-report-general-inf_Ryn29UB8BG6PHx_9MS_du6E7O/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_status-report-general-inf_Ryn29UB8BG6PHx_9MS_du6E7O/WBEAgdwkSaKaZ6aZS-4HX5OabQBN8zZZmgNG2vbNm70.php create mode 100644 sites/default/files/php/twig/67188e7262e38_status-report-grouped.htm_CagtUJ6V7K6mpjIHbCf2Oxo0i/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_status-report-grouped.htm_CagtUJ6V7K6mpjIHbCf2Oxo0i/OKK2RKMrS202-LWaWEwFqELc-ZApb_US_y1QBanwOhc.php create mode 100644 sites/default/files/php/twig/67188e7262e38_status-report-page.html.t_WTuZf9lvb2vv4JT1vPHehKEJ4/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_status-report-page.html.t_WTuZf9lvb2vv4JT1vPHehKEJ4/6pFmiaTBL1GQ4C1BUgWB36AjL7MrabMrMgQrbkRz2sA.php create mode 100644 sites/default/files/php/twig/67188e7262e38_superfish-menu-items.html_G5WEZaUpMmquz6gwS27ABeSVD/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_superfish-menu-items.html_G5WEZaUpMmquz6gwS27ABeSVD/Yzm3QokizhY4JY2gRSkIiW_a_piM2P0TujW-B7D9OCA.php create mode 100644 sites/default/files/php/twig/67188e7262e38_superfish.html.twig_W9G6UrBJTL3_TLMbXf-cbXX3z/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_superfish.html.twig_W9G6UrBJTL3_TLMbXf-cbXX3z/GrC6fmguNIfUUkt_D3JWijoBAQnJN-SV3lDeoLaieUA.php create mode 100644 sites/default/files/php/twig/67188e7262e38_system-config-form.html.t_i8g4Kgv-XQtnh_L2CZNdNtZ3A/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_system-config-form.html.t_i8g4Kgv-XQtnh_L2CZNdNtZ3A/DeHgKK39rrFSr8khrEQb8JIewgZ2hYdbDxz2xqMKbfw.php create mode 100644 sites/default/files/php/twig/67188e7262e38_system-modules-details.ht_aiQfbPCF2tCkqIcBYXnC53f-c/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_system-modules-details.ht_aiQfbPCF2tCkqIcBYXnC53f-c/GLMEoMQbdXUWYZK0ics5xcQMai8rLoM_1ePPKaXhUDs.php create mode 100644 sites/default/files/php/twig/67188e7262e38_system.cache.html.twig_B6MoSsOn92BBAxq7arMoSwdU0/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_system.cache.html.twig_B6MoSsOn92BBAxq7arMoSwdU0/D_2f0pCany-QfD1r5KxZt3XLmaSW5U9DjBM7jovChr8.php create mode 100644 sites/default/files/php/twig/67188e7262e38_system.config_basic.html._47l1u4c6qBhnSpMb5JluzOY-n/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_system.config_basic.html._47l1u4c6qBhnSpMb5JluzOY-n/hZVGrwuRQaaZfasxp2eU0U3eOBHg2GboxpLk9VufND8.php create mode 100644 sites/default/files/php/twig/67188e7262e38_system.config_error.html._Aau08Q91nNcszusNtQtERCmoy/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_system.config_error.html._Aau08Q91nNcszusNtQtERCmoy/TguneWL_ztzDqZDKTY8w5QJKdcC5xentjVNUtIoLPFw.php create mode 100644 sites/default/files/php/twig/67188e7262e38_system.maintenance_mode.h_9vB4UVCqlat2m67imMuoa8tq6/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_system.maintenance_mode.h_9vB4UVCqlat2m67imMuoa8tq6/iCbH5gXQEph8PDprZIqNvOSzrq_xzPI0PkrCrY9ItG8.php create mode 100644 sites/default/files/php/twig/67188e7262e38_system.module_uninstall.h_ww4xjp69NyvQFRBWVAuiSrvTF/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_system.module_uninstall.h_ww4xjp69NyvQFRBWVAuiSrvTF/rxj3dUguevULIlHM3kP95jdcHWcOXrgdFkI1jnIllYo.php create mode 100644 sites/default/files/php/twig/67188e7262e38_system.theme_install.html_QJhHLKkOMQw4n4iaBvxLAiqKz/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_system.theme_install.html_QJhHLKkOMQw4n4iaBvxLAiqKz/F2sYkR0hoLKBzNGCgyIaZZ5q4HXpdIcw_SKQb6sIrlc.php create mode 100644 sites/default/files/php/twig/67188e7262e38_table.html.twig_2lV6engeqzk51Z7bSsHkuW-S2/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_table.html.twig_2lV6engeqzk51Z7bSsHkuW-S2/OugG4kvXyEQYoJy-Fl--PVfipbsrWATtCJrMyeNdfiY.php create mode 100644 sites/default/files/php/twig/67188e7262e38_textarea.html.twig_Sxe527T0W5a47Q_3S6F5ajWsw/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_textarea.html.twig_Sxe527T0W5a47Q_3S6F5ajWsw/vOpZ6o_zVWvOBFymCPz-t1kpMAKi4rR3oQ_ik1u_Yvk.php create mode 100644 sites/default/files/php/twig/67188e7262e38_time.html.twig_-KL3eNJpw2R12ZjvBS3alV6f2/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_time.html.twig_-KL3eNJpw2R12ZjvBS3alV6f2/X5MWXPoGHAoq43_oAgTy8lzbl-z-VBlEwDUsmTaPf48.php create mode 100644 sites/default/files/php/twig/67188e7262e38_toolbar.html.twig_8SlqzibJ7qXx9F16lukHeHA6x/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_toolbar.html.twig_8SlqzibJ7qXx9F16lukHeHA6x/w5wtlZrOK2MYqdgmxHUIIaCDzaAac1psFQxDlzLC6Wc.php create mode 100644 sites/default/files/php/twig/67188e7262e38_toolbar.html.twig_RUpyQRWdRvH76bH_7yQG7p3c0/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_toolbar.html.twig_RUpyQRWdRvH76bH_7yQG7p3c0/AGPBg1udEqFXAuqGq9nAFJcoazg-XRp0YKHSIoVd5Lk.php create mode 100644 sites/default/files/php/twig/67188e7262e38_tour.overview.html.twig_FrwOI5NgI1AGpukXgESgHOGA6/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_tour.overview.html.twig_FrwOI5NgI1AGpukXgESgHOGA6/o4OJNKn5AceLBzOt2XXhnnFpdBnjDYF-Y-W-GoeRVvQ.php create mode 100644 sites/default/files/php/twig/67188e7262e38_user.create.html.twig_HV45MnyE42ib7birLxe_Wx1iR/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_user.create.html.twig_HV45MnyE42ib7birLxe_Wx1iR/52dKEon2f7FftDk0ebQK76WAbtKuLk7P7hrP5PTKbf8.php create mode 100644 sites/default/files/php/twig/67188e7262e38_user.new_role.html.twig_jTTPEnKkj-s1H0mewhxi63dCm/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_user.new_role.html.twig_jTTPEnKkj-s1H0mewhxi63dCm/476MXL2x7zQAVNXevTxauHZP9nJX4-txkqzmjK_zSeI.php create mode 100644 sites/default/files/php/twig/67188e7262e38_user.overview.html.twig_2PT9d_ifC3eLul396-z5LKrKD/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_user.overview.html.twig_2PT9d_ifC3eLul396-z5LKrKD/8dVaiv11Gzs4jvZN_PiLZQACnPVIuE4XXJv8l32YRqU.php create mode 100644 sites/default/files/php/twig/67188e7262e38_user.permissions.html.twi_t-hmMEmUzo5bHdBr2DAim67ta/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_user.permissions.html.twi_t-hmMEmUzo5bHdBr2DAim67ta/4P36hpekP5M4TMJdFGoSy6niLDvtdsNi5qJD_x8hU_4.php create mode 100644 sites/default/files/php/twig/67188e7262e38_user.security_account_set_QrKF1hHq5xBzXih0IyfldXCwB/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_user.security_account_set_QrKF1hHq5xBzXih0IyfldXCwB/SlsBj51fPntyhrclzd5HxBf07Owgd8CKUDLvr3a6ZX4.php create mode 100644 sites/default/files/php/twig/67188e7262e38_user.update.html.twig_TbO6PtthPi6bOPohgzW2msMVX/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_user.update.html.twig_TbO6PtthPi6bOPohgzW2msMVX/Znwe9CKbBb3L-ZgP7zCXvRk04Xzv5BHlE4EDIE2MhDE.php create mode 100644 sites/default/files/php/twig/67188e7262e38_username.html.twig_PRkq2W3Pu88g3HkJqdsyVZXwP/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_username.html.twig_PRkq2W3Pu88g3HkJqdsyVZXwP/6w_bD9HGOWa92NgVhSlVT-Rs20VdAHApOLOoKvNWyoo.php create mode 100644 sites/default/files/php/twig/67188e7262e38_views-mini-pager.html.twi_IYwuYnv9zLEoWvpzySq6ADJ02/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_views-mini-pager.html.twi_IYwuYnv9zLEoWvpzySq6ADJ02/CiyvJlln8OFeQ4ADOh9aM_-r8peF7JvfmF-Fb3YYXyw.php create mode 100644 sites/default/files/php/twig/67188e7262e38_views-ui-container.html.t_Qcg-17xoxeLh5zun1bIMG9Gov/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_views-ui-container.html.t_Qcg-17xoxeLh5zun1bIMG9Gov/RY9QQemItK8xm8E_k0dTaDaqgLtCrQ1yhXSN1qHBQwU.php create mode 100644 sites/default/files/php/twig/67188e7262e38_views-ui-display-tab-buck_EDsspj_YS8bkgxIzQxqN6DNZw/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_views-ui-display-tab-buck_EDsspj_YS8bkgxIzQxqN6DNZw/Apybua1HOlWV2uJHwtVhTsH68MUp24PKPFT5mlwUYmg.php create mode 100644 sites/default/files/php/twig/67188e7262e38_views-ui-display-tab-sett_P10DypQoRnxFOufstnX7f5eaC/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_views-ui-display-tab-sett_P10DypQoRnxFOufstnX7f5eaC/pBlzSnO053C5QiZtbC8td9pU9WmB41C3nP9pEITbIzg.php create mode 100644 sites/default/files/php/twig/67188e7262e38_views-ui-view-displays-li_qxOYlYppbvanjC68iEV2isO1g/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_views-ui-view-displays-li_qxOYlYppbvanjC68iEV2isO1g/lbsGqHbr7bQ1StqkQDbR7-hYKy-2O44IeKMn2gJ8SEo.php create mode 100644 sites/default/files/php/twig/67188e7262e38_views-ui-view-preview-sec_BWqhB-5zoPRnbn3vI3RtoVbIb/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_views-ui-view-preview-sec_BWqhB-5zoPRnbn3vI3RtoVbIb/ZQ_S-MjoBfUonNTWAXMr1ugMFEdBOEr5yDy1s3AJ7bk.php create mode 100644 sites/default/files/php/twig/67188e7262e38_views-ui-views-listing-ta_t82ThN6l0_Ol_YwaduNeGj4zN/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_views-ui-views-listing-ta_t82ThN6l0_Ol_YwaduNeGj4zN/93o2dkX0pn28KFiBPzdfkMvgsRVpsAFrmXg_5N6jLv8.php create mode 100644 sites/default/files/php/twig/67188e7262e38_views-view-field.html.twi_Q6hS6skBVljcfeB0JRgJAakkO/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_views-view-field.html.twi_Q6hS6skBVljcfeB0JRgJAakkO/YqRhvs3O1dMDF9ytauKom94kP2mOCdeE0RZXPjlSML0.php create mode 100644 sites/default/files/php/twig/67188e7262e38_views-view-fields.html.tw_A1XyOIozVur6-mKqAAHU6-Frf/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_views-view-fields.html.tw_A1XyOIozVur6-mKqAAHU6-Frf/V5w40mw4TjrQj9BvdSgTKTlgmKUlbsGu8N_eVlnZNJM.php create mode 100644 sites/default/files/php/twig/67188e7262e38_views-view.html.twig_Thxc5I1NHtE05jy78cxMbSsE0/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_views-view.html.twig_Thxc5I1NHtE05jy78cxMbSsE0/C0xkwevsk08vFdt-k_srRSACQXZeRd3k8gfhrmaQ7Lc.php create mode 100644 sites/default/files/php/twig/67188e7262e38_views-view.html.twig_yD_TNLk_yd4jU-5fxm_rHSx3O/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_views-view.html.twig_yD_TNLk_yd4jU-5fxm_rHSx3O/iK_cCDw4fOyfCQrhzP2hrqVlBB0y9-O_-MHqf9kLUbg.php create mode 100644 sites/default/files/php/twig/67188e7262e38_views.overview.html.twig_j67KQAc_5VZmV-Ic8PBYIIuVo/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_views.overview.html.twig_j67KQAc_5VZmV-Ic8PBYIIuVo/hzd0vd6md_W1oMMyvaYaxl9eaPWsblciyvDcKDnzRZg.php create mode 100644 sites/default/files/php/twig/67188e7262e38_views_ui.add_display.html_xgMdlEpZetNzwWSnBzu5OQO_k/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_views_ui.add_display.html_xgMdlEpZetNzwWSnBzu5OQO_k/vI6uQBwF79RxSrVbqRZxPsIbhY6FO7rHxiyyPCIwDw4.php create mode 100644 sites/default/files/php/twig/67188e7262e38_views_ui.bulk_operations._kG8ctvtOcMJ5AVBAanKe1j4Dd/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_views_ui.bulk_operations._kG8ctvtOcMJ5AVBAanKe1j4Dd/hp5stAglglQpzcVwqU_zhGfTYMg-3Z5Ovt7-hs5_fSs.php create mode 100644 sites/default/files/php/twig/67188e7262e38_views_ui.create.html.twig_LTH0kE2Wd_cilbR4YPmOdKaeQ/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_views_ui.create.html.twig_LTH0kE2Wd_cilbR4YPmOdKaeQ/k4xoG4nQjsalpQ3Z7n7WhTrMx_nqI_TUPKcrxQsKK7Q.php create mode 100644 sites/default/files/php/twig/67188e7262e38_views_ui.edit.html.twig_cvBRjTwV_8xKxsDAXQZNCwNuK/.htaccess create mode 100644 sites/default/files/php/twig/67188e7262e38_views_ui.edit.html.twig_cvBRjTwV_8xKxsDAXQZNCwNuK/CzDiW0DRmSYb7dSdXCp-E0zPjMGQ9gEOr5axlhrvOR4.php create mode 100755 sites/default/files/pictures/picture-109-1687687574.jpg create mode 100755 sites/default/files/pictures/picture-117-1695749316.jpg create mode 100755 sites/default/files/pictures/picture-128-1703396741.jpg create mode 100755 sites/default/files/pictures/picture-129-1702640010.jpg create mode 100755 sites/default/files/pictures/picture-147-1719490209.jpg create mode 100755 sites/default/files/pictures/picture-29-1619211068.jpg create mode 100755 sites/default/files/pictures/picture-39-1620645703.jpg create mode 100755 sites/default/files/pictures/picture-45-1624000299.jpg create mode 100755 sites/default/files/pictures/picture-46-1624961678.jpg create mode 100755 sites/default/files/pictures/picture-50-1624962784.jpg create mode 100755 sites/default/files/pictures/picture-51-1624962503.jpg create mode 100755 sites/default/files/pictures/picture-53-1624962885.png create mode 100755 sites/default/files/pictures/picture-57-1624969463.jpg create mode 100755 sites/default/files/pictures/picture-62-1626780241.jpg create mode 100755 sites/default/files/pictures/picture-79-1642760519.jpg create mode 100755 sites/default/files/pictures/picture-88-1673355757.jpg create mode 100755 sites/default/files/styles/flexslider_full/public/2024-10/slide-image-4.png create mode 100755 sites/default/files/styles/flexslider_full/public/2024-10/slide-image-5.png create mode 100755 sites/default/files/styles/flexslider_full/public/2024-10/slide-image-7.png create mode 100755 sites/default/files/styles/homepage_carousel_image/public/2024-10/slide-image-4.png create mode 100755 sites/default/files/styles/homepage_carousel_image/public/2024-10/slide-image-5.png create mode 100755 sites/default/files/styles/homepage_carousel_image/public/2024-10/slide-image-7.png create mode 100755 sites/default/files/styles/homepage_carousel_image/public/core/modules/image/sample.png create mode 100755 sites/default/files/styles/large/public/2024-10/slide-image-4.png create mode 100755 sites/default/files/styles/large/public/2024-10/slide-image-5.png create mode 100755 sites/default/files/styles/large/public/2024-10/slide-image-7.png create mode 100755 sites/default/files/styles/slick_media/public/2024-10/slide-image-4.png create mode 100755 sites/default/files/styles/slick_media/public/2024-10/slide-image-5.png create mode 100755 sites/default/files/styles/slick_media/public/2024-10/slide-image-7.png create mode 100755 sites/default/files/styles/thumbnail/public/2024-10/slide-image-4.png create mode 100755 sites/default/files/styles/thumbnail/public/2024-10/slide-image-5.png create mode 100755 sites/default/files/styles/thumbnail/public/2024-10/slide-image-7.png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Auto Street Light(1).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Auto Street Light(2).gif create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Auto Street Light(3).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Blink LED(1).jpeg create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Blink LED(2).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Blink LED(3).gif create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Control LED using Relay(2).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Control LED with Relay(1).gif create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Control LED with Relay(3).gif create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Electronic Dice (2).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Electronic Dice(1).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Electronic Dice(3).gif create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Gas Sensor(1).jpg create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Gas Sensor(4).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Gas senrsor(3).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Gas sensor(2).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Intruder sensor(1).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Intruder sensor(2).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Intruder sensor(3).gif create mode 100755 sites/default/files/styles/thumbnail/public/AoC_LCD ScrollingText(1).gif create mode 100755 sites/default/files/styles/thumbnail/public/AoC_LCD ScrollingText(2).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_LCD ScrollingText(3).gif create mode 100755 sites/default/files/styles/thumbnail/public/AoC_LED Control Button(1).jpg create mode 100755 sites/default/files/styles/thumbnail/public/AoC_LED Control Button(2).gif create mode 100755 sites/default/files/styles/thumbnail/public/AoC_LED Control Button(3).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_LED Control Button(4).gif create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Motion senosr with alarm (4).gif create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Motion sensor with Alarm (2).gif create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Motion sensor with Alarm (3).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Motion sensor with Alarm (5).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Motion sensor with alarm(1).jpg create mode 100755 sites/default/files/styles/thumbnail/public/AoC_RGB Temp Indicator(1).jpg create mode 100755 sites/default/files/styles/thumbnail/public/AoC_RGB Temp Indicator(2).jpg create mode 100755 sites/default/files/styles/thumbnail/public/AoC_RGB Temp Indicator(3).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_RGB Temp Indicator(4).gif create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Servo Motor(2).gif create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Servo Motor(3).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Servo Motor(4).gif create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Therimstor Temp Display(4).gif create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Thermistor Temp Display(1).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Thermistor Temp Display(2).gif create mode 100755 sites/default/files/styles/thumbnail/public/AoC_Thermistor temp Display(3).png create mode 100755 sites/default/files/styles/thumbnail/public/AoC_servo motor(1).jpeg create mode 100755 sites/default/files/styles/thumbnail/public/Arduino on Cloud_Up and Down Counter(1).png create mode 100755 sites/default/files/styles/thumbnail/public/Arduino on Cloud_Up and Down Counter(2).png create mode 100755 sites/default/files/styles/thumbnail/public/Arduino on Cloud_Up and Down Counter.gif create mode 100755 sites/default/files/styles/thumbnail/public/Blink_1.png create mode 100755 sites/default/files/styles/thumbnail/public/Blink_2.png create mode 100755 sites/default/files/styles/thumbnail/public/Blink_3.png create mode 100755 sites/default/files/styles/thumbnail/public/Blink_4.png create mode 100755 sites/default/files/styles/thumbnail/public/Blink_5.png create mode 100755 sites/default/files/styles/thumbnail/public/Blink_6.png create mode 100755 sites/default/files/styles/thumbnail/public/Blink_7.png create mode 100755 sites/default/files/styles/thumbnail/public/E_Blink of LED.jpg create mode 100755 sites/default/files/styles/thumbnail/public/E_Blink of LED_1.png create mode 100755 sites/default/files/styles/thumbnail/public/E_Blink of LED_7.gif create mode 100755 sites/default/files/styles/thumbnail/public/E_Control LED.jpg create mode 100755 sites/default/files/styles/thumbnail/public/E_Control LED_1.gif create mode 100755 sites/default/files/styles/thumbnail/public/E_Intruder.png create mode 100755 sites/default/files/styles/thumbnail/public/E_Intruder_1.png create mode 100755 sites/default/files/styles/thumbnail/public/E_Intruder_2.png create mode 100755 sites/default/files/styles/thumbnail/public/E_Intruder_3.png create mode 100755 sites/default/files/styles/thumbnail/public/E_Intruder_4.png create mode 100755 sites/default/files/styles/thumbnail/public/E_Intruder_5.gif create mode 100755 sites/default/files/styles/thumbnail/public/E_LCD 2.png create mode 100755 sites/default/files/styles/thumbnail/public/E_LCD 3.png create mode 100755 sites/default/files/styles/thumbnail/public/E_LCD.gif create mode 100755 sites/default/files/styles/thumbnail/public/E_LCD_1.png create mode 100755 sites/default/files/styles/thumbnail/public/E_LCD_2.png create mode 100755 sites/default/files/styles/thumbnail/public/E_LCD_4.png create mode 100755 sites/default/files/styles/thumbnail/public/E_LCD_5.gif create mode 100755 sites/default/files/styles/thumbnail/public/E_Servo.gif create mode 100755 sites/default/files/styles/thumbnail/public/E_Servo_1.jpg create mode 100755 sites/default/files/styles/thumbnail/public/E_Servo_2.png create mode 100755 sites/default/files/styles/thumbnail/public/E_Servo_3.png create mode 100755 sites/default/files/styles/thumbnail/public/E_Servo_4.png create mode 100755 sites/default/files/styles/thumbnail/public/E_Servo_5.png create mode 100755 sites/default/files/styles/thumbnail/public/E_Servo_6.png create mode 100755 sites/default/files/styles/thumbnail/public/E_Servo_7.gif create mode 100755 sites/default/files/styles/thumbnail/public/E_Temp.jpg create mode 100755 sites/default/files/styles/thumbnail/public/E_Temp_1.png create mode 100755 sites/default/files/styles/thumbnail/public/E_Temp_2.png create mode 100755 sites/default/files/styles/thumbnail/public/E_Temp_3.png create mode 100755 sites/default/files/styles/thumbnail/public/LED_Pushbutton_1.png create mode 100755 sites/default/files/styles/thumbnail/public/LED_Pushbutton_10.png create mode 100755 sites/default/files/styles/thumbnail/public/LED_Pushbutton_11.png create mode 100755 sites/default/files/styles/thumbnail/public/LED_Pushbutton_12.png create mode 100755 sites/default/files/styles/thumbnail/public/LED_Pushbutton_13.png create mode 100755 sites/default/files/styles/thumbnail/public/LED_Pushbutton_14.gif create mode 100755 sites/default/files/styles/thumbnail/public/LED_Pushbutton_2.png create mode 100755 sites/default/files/styles/thumbnail/public/LED_Pushbutton_3.png create mode 100755 sites/default/files/styles/thumbnail/public/LED_Pushbutton_4.png create mode 100755 sites/default/files/styles/thumbnail/public/LED_Pushbutton_5.png create mode 100755 sites/default/files/styles/thumbnail/public/LED_Pushbutton_6.png create mode 100755 sites/default/files/styles/thumbnail/public/LED_Pushbutton_7.png create mode 100755 sites/default/files/styles/thumbnail/public/LED_Pushbutton_8.png create mode 100755 sites/default/files/styles/thumbnail/public/LED_Pushbutton_9.png create mode 100755 sites/default/files/styles/thumbnail/public/fossee_logo.png create mode 100755 sites/default/files/styles/thumbnail/public/gas sesnor.gif create mode 100755 sites/default/files/styles/thumbnail/public/left-img.png create mode 100755 sites/default/files/styles/thumbnail/public/pictures/picture-117-1695749316.jpg create mode 100755 sites/default/files/styles/thumbnail/public/pictures/picture-128-1703396741.jpg create mode 100755 sites/default/files/styles/thumbnail/public/pictures/picture-129-1702640010.jpg create mode 100755 sites/default/files/styles/thumbnail/public/pictures/picture-147-1719490209.jpg create mode 100755 sites/default/files/styles/thumbnail/public/pictures/picture-46-1624961678.jpg create mode 100755 sites/default/files/styles/thumbnail/public/pictures/picture-50-1624962784.jpg create mode 100755 sites/default/files/styles/thumbnail/public/pictures/picture-51-1624962503.jpg create mode 100755 sites/default/files/styles/thumbnail/public/pictures/picture-53-1624962885.png create mode 100755 sites/default/files/styles/thumbnail/public/pictures/picture-57-1624969463.jpg create mode 100755 sites/default/files/styles/thumbnail/public/pictures/picture-62-1626780241.jpg create mode 100755 sites/default/files/xmlsitemap/NXhscRe0440PFpI5dSznEVgmauL25KojD7u4e9aZwOM/1.xml create mode 100755 sites/default/settings.php create mode 100755 themes/openplc/css/header.css create mode 100755 themes/openplc/css/style.css create mode 100755 themes/openplc/image/NMEICT.png create mode 100755 themes/openplc/image/footer_license.png create mode 100755 themes/openplc/image/fossee-logo.png create mode 100755 themes/openplc/image/iitb-logo.png create mode 100755 themes/openplc/includes/bootstrap/css/bootstrap-theme.min.css create mode 100755 themes/openplc/includes/bootstrap/css/bootstrap.css create mode 100755 themes/openplc/includes/bootstrap/css/bootstrap.min.css create mode 100755 themes/openplc/includes/bootstrap/js/bootstrap.js create mode 100755 themes/openplc/includes/bootstrap/js/bootstrap.min.js create mode 100755 themes/openplc/includes/fontawesome/css/fontawesome-all.css create mode 100755 themes/openplc/includes/fontawesome/css/fontawesome.min.css create mode 100755 themes/openplc/includes/fontawesome/webfonts/fa-brands-400.eot create mode 100755 themes/openplc/includes/fontawesome/webfonts/fa-brands-400.svg create mode 100755 themes/openplc/includes/fontawesome/webfonts/fa-brands-400.ttf create mode 100755 themes/openplc/includes/fontawesome/webfonts/fa-brands-400.woff create mode 100755 themes/openplc/includes/fontawesome/webfonts/fa-brands-400.woff2 create mode 100755 themes/openplc/includes/fontawesome/webfonts/fa-regular-400.eot create mode 100755 themes/openplc/includes/fontawesome/webfonts/fa-regular-400.svg create mode 100755 themes/openplc/includes/fontawesome/webfonts/fa-regular-400.ttf create mode 100755 themes/openplc/includes/fontawesome/webfonts/fa-regular-400.woff create mode 100755 themes/openplc/includes/fontawesome/webfonts/fa-regular-400.woff2 create mode 100755 themes/openplc/includes/fontawesome/webfonts/fa-solid-900.eot create mode 100755 themes/openplc/includes/fontawesome/webfonts/fa-solid-900.svg create mode 100755 themes/openplc/includes/fontawesome/webfonts/fa-solid-900.ttf create mode 100755 themes/openplc/includes/fontawesome/webfonts/fa-solid-900.woff create mode 100755 themes/openplc/includes/fontawesome/webfonts/fa-solid-900.woff2 create mode 100755 themes/openplc/js/jquery-3.3.1.min.js create mode 100755 themes/openplc/js/nav.js create mode 100755 themes/openplc/openplc.info.yml create mode 100755 themes/openplc/openplc.libraries.yml create mode 100755 themes/openplc/openplc.theme create mode 100755 themes/openplc/screenshot.png create mode 100755 themes/openplc/templates/block--openplc-branding.html.twig create mode 100755 themes/openplc/templates/block--system-menu-block--resources.html.twig create mode 100755 themes/openplc/templates/field.html.twig create mode 100755 themes/openplc/templates/html.html.twig create mode 100755 themes/openplc/templates/menu--resources.html.twig create mode 100755 themes/openplc/templates/menu-local-task.html.twig create mode 100755 themes/openplc/templates/menu-local-tasks.html.twig create mode 100755 themes/openplc/templates/page--front.html.twig create mode 100755 themes/openplc/templates/page.html.twig create mode 100755 themes/openplc/templates/region--breadcrumb.html.twig create mode 100755 themes/openplc/templates/region--content.html.twig create mode 100755 themes/openplc/templates/region--footer.html.twig create mode 100755 themes/openplc/templates/views-view-fields--Carousel_Images--carousel_images.html.twig diff --git a/composer.json b/composer.json new file mode 100755 index 0000000..5c47dd4 --- /dev/null +++ b/composer.json @@ -0,0 +1,119 @@ +{ + "name": "drupal/legacy-project", + "description": "Project template for Drupal projects with composer following drupal/drupal layout", + "type": "project", + "license": "GPL-2.0-or-later", + "homepage": "https://www.drupal.org/project/drupal", + "support": { + "docs": "https://www.drupal.org/docs/user_guide/en/index.html", + "chat": "https://www.drupal.org/node/314178" + }, + "repositories": [ + { + "type": "composer", + "url": "https://packages.drupal.org/8" + } + ], + "require": { + "composer/installers": "^2.0", + "drupal/bartik": "^1.0", + "drupal/blazy": "^3.0", + "drupal/book": "^2.0@alpha", + "drupal/bootstrap3": "^1.0", + "drupal/ckeditor": "^1.0", + "drupal/colorbox": "^2.1", + "drupal/core-composer-scaffold": "^10.0", + "drupal/core-project-message": "^10.0", + "drupal/core-recommended": "^10.0", + "drupal/core-vendor-hardening": "^10.0", + "drupal/flexslider": "^3.0@alpha", + "drupal/git_deploy": "^2.6", + "drupal/google_tag": "^1.7", + "drupal/jquery_ui": "^1.7", + "drupal/libraries": "^4.0", + "drupal/matomo": "^1.19", + "drupal/php": "^1.1", + "drupal/scheduled_maintenance": "^2.0", + "drupal/seven": "^1.0.0", + "drupal/slick": "^3.0", + "drupal/slick_views": "^3.0", + "drupal/spambot": "^1.2", + "drupal/superfish": "^1.7", + "drupal/views_dates": "2.x-dev@dev", + "drupal/xmlsitemap": "^1.1", + "drush/drush": "^12.5" + }, + "conflict": { + "drupal/drupal": "*" + }, + "minimum-stability": "stable", + "prefer-stable": true, + "config": { + "allow-plugins": { + "composer/installers": true, + "drupal/core-composer-scaffold": true, + "drupal/core-project-message": true, + "drupal/core-vendor-hardening": true, + "phpstan/extension-installer": true, + "dealerdirect/phpcodesniffer-composer-installer": true + }, + "sort-packages": true + }, + "extra": { + "drupal-scaffold": { + "locations": { + "web-root": "./" + } + }, + "installer-paths": { + "core": [ + "type:drupal-core" + ], + "libraries/{$name}": [ + "type:drupal-library" + ], + "modules/contrib/{$name}": [ + "type:drupal-module" + ], + "profiles/contrib/{$name}": [ + "type:drupal-profile" + ], + "themes/contrib/{$name}": [ + "type:drupal-theme" + ], + "drush/Commands/contrib/{$name}": [ + "type:drupal-drush" + ], + "modules/custom/{$name}": [ + "type:drupal-custom-module" + ], + "profiles/custom/{$name}": [ + "type:drupal-custom-profile" + ], + "themes/custom/{$name}": [ + "type:drupal-custom-theme" + ] + }, + "drupal-core-project-message": { + "include-keys": [ + "homepage", + "support" + ], + "post-create-project-cmd-message": [ + " ", + " Congratulations, you’ve installed the Drupal codebase ", + " from the drupal/legacy-project template! ", + " ", + "", + "Next steps:", + " * Install the site: https://www.drupal.org/docs/installing-drupal", + " * Read the user guide: https://www.drupal.org/docs/user_guide/en/index.html", + " * Get support: https://www.drupal.org/support", + " * Get involved with the Drupal community:", + " https://www.drupal.org/getting-involved", + " * Remove the plugin that prints this message:", + " composer remove drupal/core-project-message" + ] + } + } +} diff --git a/libraries/DOMPurify/.babelrc b/libraries/DOMPurify/.babelrc new file mode 100644 index 0000000..25dea00 --- /dev/null +++ b/libraries/DOMPurify/.babelrc @@ -0,0 +1,17 @@ +{ + "presets": [ + [ + "@babel/preset-env", + { + "targets": { + "chrome": 51, + "firefox": 53, + "opera": 38, + "safari": 11, + "edge": 51 + }, + "modules": false + } + ] + ] +} diff --git a/libraries/DOMPurify/.editorconfig b/libraries/DOMPurify/.editorconfig new file mode 100644 index 0000000..3ce9044 --- /dev/null +++ b/libraries/DOMPurify/.editorconfig @@ -0,0 +1,11 @@ +# http://EditorConfig.org + +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/libraries/DOMPurify/.github/FUNDING.yml b/libraries/DOMPurify/.github/FUNDING.yml new file mode 100755 index 0000000..a239581 --- /dev/null +++ b/libraries/DOMPurify/.github/FUNDING.yml @@ -0,0 +1 @@ +github: cure53 diff --git a/libraries/DOMPurify/.github/ISSUE_TEMPLATE.md b/libraries/DOMPurify/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..0b12f69 --- /dev/null +++ b/libraries/DOMPurify/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,23 @@ +> This issue proposes a [bug, feature] which... + +### Background & Context + +Please provide some more detailed information about the general background and context of this issue and delete non applicable sections below. + +### Bug + +#### Input + +Some HTML which is thrown at DOMPurify. + +#### Given output + +The output given by DOMPurify. + +#### Expected output + +The expected output. + +### Feature + +Briefly outline the proposed feature, its value and a potentially proposed implementation from a high level. diff --git a/libraries/DOMPurify/.github/PULL_REQUEST_TEMPLATE.md b/libraries/DOMPurify/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..3f1a22b --- /dev/null +++ b/libraries/DOMPurify/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,22 @@ +## Summary + + + +## Background & Context + + + +## Tasks + + + +- xxxx +- xxxx +- xxxx + +## Dependencies + + + +- [x] Resolved dependency +- [ ] Open dependency diff --git a/libraries/DOMPurify/.github/dependabot.yml b/libraries/DOMPurify/.github/dependabot.yml new file mode 100644 index 0000000..203f3c8 --- /dev/null +++ b/libraries/DOMPurify/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: +- package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" diff --git a/libraries/DOMPurify/.github/workflows/build-and-test.yml b/libraries/DOMPurify/.github/workflows/build-and-test.yml new file mode 100644 index 0000000..f6ce75e --- /dev/null +++ b/libraries/DOMPurify/.github/workflows/build-and-test.yml @@ -0,0 +1,45 @@ +name: Build and Test + +# The event triggers are configured as following: +# - on `main` -> trigger the workflow on every push +# - on any pull request -> trigger the workflow +# This is to avoid running the workflow twice on pull requests. +on: + push: + branches: + - main + - 3.x + - 2.x + pull_request: + +jobs: + install: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [16.x, 17.x, 18.x, 19.x, 20.x, 21.x] + + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - name: Install Dependencies + run: npm ci + - name: Build + run: npm run build + - name: Lint + run: npm run lint + - name: Test + uses: GabrielBB/xvfb-action@v1.6 + with: + run: npm run test:ci + env: + TEST_BROWSERSTACK: ${{ startsWith(matrix.node-version, '21') }} + TEST_PROBE_ONLY: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/2.x' }} + BS_USERNAME: ${{ secrets.BS_USERNAME }} + BS_ACCESSKEY: ${{ secrets.BS_ACCESSKEY }} diff --git a/libraries/DOMPurify/.github/workflows/codeql-analysis.yml b/libraries/DOMPurify/.github/workflows/codeql-analysis.yml new file mode 100644 index 0000000..0d7d28d --- /dev/null +++ b/libraries/DOMPurify/.github/workflows/codeql-analysis.yml @@ -0,0 +1,62 @@ +name: "CodeQL" + +on: + push: + branches: [main] + pull_request: + # The branches below must be a subset of the branches above + branches: [main] + schedule: + - cron: '0 19 * * 4' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + # Override automatic language detection by changing the below list + # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python'] + language: ['javascript'] + # Learn more... + # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + # We must fetch at least the immediate parents so that if this is + # a pull request then we can checkout the head. + fetch-depth: 2 + + # If this run was triggered by a pull request event, then checkout + # the head of the pull request instead of the merge commit. + - run: git checkout HEAD^2 + if: ${{ github.event_name == 'pull_request' }} + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v3 + + # â„¹ï¸ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl + + # âœï¸ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 diff --git a/libraries/DOMPurify/.gitignore b/libraries/DOMPurify/.gitignore new file mode 100644 index 0000000..971101f --- /dev/null +++ b/libraries/DOMPurify/.gitignore @@ -0,0 +1,9 @@ +.project +node_modules +bower_components +npm-debug.log +.vscode +yarn-error.log +nbproject/private/private.properties +nbproject/project.properties +nbproject/private/private.xml diff --git a/libraries/DOMPurify/.nvmrc b/libraries/DOMPurify/.nvmrc new file mode 100644 index 0000000..b009dfb --- /dev/null +++ b/libraries/DOMPurify/.nvmrc @@ -0,0 +1 @@ +lts/* diff --git a/libraries/DOMPurify/.prettierignore b/libraries/DOMPurify/.prettierignore new file mode 100644 index 0000000..e69de29 diff --git a/libraries/DOMPurify/.prettierrc b/libraries/DOMPurify/.prettierrc new file mode 100644 index 0000000..c6a1376 --- /dev/null +++ b/libraries/DOMPurify/.prettierrc @@ -0,0 +1,4 @@ +{ + "trailingComma": "es5", + "singleQuote": true +} diff --git a/libraries/DOMPurify/.settings/.gitignore b/libraries/DOMPurify/.settings/.gitignore new file mode 100644 index 0000000..f297854 --- /dev/null +++ b/libraries/DOMPurify/.settings/.gitignore @@ -0,0 +1,5 @@ +/.jsdtscope +/org.eclipse.ltk.core.refactoring.prefs +/org.eclipse.wst.common.project.facet.core.xml +/org.eclipse.wst.jsdt.ui.superType.container +/org.eclipse.wst.jsdt.ui.superType.name diff --git a/libraries/DOMPurify/dist/purify.cjs.d.ts b/libraries/DOMPurify/dist/purify.cjs.d.ts new file mode 100644 index 0000000..c1c1d7d --- /dev/null +++ b/libraries/DOMPurify/dist/purify.cjs.d.ts @@ -0,0 +1,401 @@ +/*! @license DOMPurify 3.1.7 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.7/LICENSE */ + +/** + * Configuration to control DOMPurify behavior. + */ +interface Config { + /** + * Extend the existing array of allowed attributes. + */ + ADD_ATTR?: string[] | undefined; + /** + * Extend the existing array of elements that can use Data URIs. + */ + ADD_DATA_URI_TAGS?: string[] | undefined; + /** + * Extend the existing array of allowed tags. + */ + ADD_TAGS?: string[] | undefined; + /** + * Extend the existing array of elements that are safe for URI-like values (be careful, XSS risk). + */ + ADD_URI_SAFE_ATTR?: string[] | undefined; + /** + * Allow ARIA attributes, leave other safe HTML as is (default is true). + */ + ALLOW_ARIA_ATTR?: boolean | undefined; + /** + * Allow HTML5 data attributes, leave other safe HTML as is (default is true). + */ + ALLOW_DATA_ATTR?: boolean | undefined; + /** + * Allow external protocol handlers in URL attributes (default is false, be careful, XSS risk). + * By default only `http`, `https`, `ftp`, `ftps`, `tel`, `mailto`, `callto`, `sms`, `cid` and `xmpp` are allowed. + */ + ALLOW_UNKNOWN_PROTOCOLS?: boolean | undefined; + /** + * Decide if self-closing tags in attributes are allowed. + * Usually removed due to a mXSS issue in jQuery 3.0. + */ + ALLOW_SELF_CLOSE_IN_ATTR?: boolean | undefined; + /** + * Allow only specific attributes. + */ + ALLOWED_ATTR?: string[] | undefined; + /** + * Allow only specific elements. + */ + ALLOWED_TAGS?: string[] | undefined; + /** + * Allow only specific namespaces. Defaults to: + * - `http://www.w3.org/1999/xhtml` + * - `http://www.w3.org/2000/svg` + * - `http://www.w3.org/1998/Math/MathML` + */ + ALLOWED_NAMESPACES?: string[] | undefined; + /** + * Allow specific protocols handlers in URL attributes via regex (be careful, XSS risk). + * Default RegExp: + * ``` + * /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i; + * ``` + */ + ALLOWED_URI_REGEXP?: RegExp | undefined; + /** + * Define how custom elements are handled. + */ + CUSTOM_ELEMENT_HANDLING?: { + /** + * Regular expression or function to match to allowed elements. + * Default is null (disallow any custom elements). + */ + tagNameCheck?: RegExp | ((tagName: string) => boolean) | null | undefined; + /** + * Regular expression or function to match to allowed attributes. + * Default is null (disallow any attributes not on the allow list). + */ + attributeNameCheck?: RegExp | ((attributeName: string) => boolean) | null | undefined; + /** + * Allow custom elements derived from built-ins if they pass `tagNameCheck`. Default is false. + */ + allowCustomizedBuiltInElements?: boolean | undefined; + }; + /** + * Add attributes to block-list. + */ + FORBID_ATTR?: string[] | undefined; + /** + * Add child elements to be removed when their parent is removed. + */ + FORBID_CONTENTS?: string[] | undefined; + /** + * Add elements to block-list. + */ + FORBID_TAGS?: string[] | undefined; + /** + * Glue elements like style, script or others to `document.body` and prevent unintuitive browser behavior in several edge-cases (default is false). + */ + FORCE_BODY?: boolean | undefined; + /** + * Map of non-standard HTML element names to support. Map to true to enable support. For example: + * + * ``` + * HTML_INTEGRATION_POINTS: { foreignobject: true } + * ``` + */ + HTML_INTEGRATION_POINTS?: Record | undefined; + /** + * Sanitize a node "in place", which is much faster depending on how you use DOMPurify. + */ + IN_PLACE?: boolean | undefined; + /** + * Keep an element's content when the element is removed (default is true). + */ + KEEP_CONTENT?: boolean | undefined; + /** + * Map of MathML element names to support. Map to true to enable support. For example: + * + * ``` + * MATHML_TEXT_INTEGRATION_POINTS: { mtext: true } + * ``` + */ + MATHML_TEXT_INTEGRATION_POINTS?: Record | undefined; + /** + * Change the default namespace from HTML to something different. + */ + NAMESPACE?: string | undefined; + /** + * Change the parser type so sanitized data is treated as XML and not as HTML, which is the default. + */ + PARSER_MEDIA_TYPE?: DOMParserSupportedType | undefined; + /** + * Return a DOM `DocumentFragment` instead of an HTML string (default is false). + */ + RETURN_DOM_FRAGMENT?: boolean | undefined; + /** + * Return a DOM `HTMLBodyElement` instead of an HTML string (default is false). + */ + RETURN_DOM?: boolean | undefined; + /** + * Return a TrustedHTML object instead of a string if possible. + */ + RETURN_TRUSTED_TYPE?: boolean | undefined; + /** + * Strip `{{ ... }}`, `${ ... }` and `<% ... %>` to make output safe for template systems. + * Be careful please, this mode is not recommended for production usage. + * Allowing template parsing in user-controlled HTML is not advised at all. + * Only use this mode if there is really no alternative. + */ + SAFE_FOR_TEMPLATES?: boolean | undefined; + /** + * Change how e.g. comments containing risky HTML characters are treated. + * Be very careful, this setting should only be set to `false` if you really only handle + * HTML and nothing else, no SVG, MathML or the like. + * Otherwise, changing from `true` to `false` will lead to XSS in this or some other way. + */ + SAFE_FOR_XML?: boolean | undefined; + /** + * Use DOM Clobbering protection on output (default is true, handle with care, minor XSS risks here). + */ + SANITIZE_DOM?: boolean | undefined; + /** + * Enforce strict DOM Clobbering protection via namespace isolation (default is false). + * When enabled, isolates the namespace of named properties (i.e., `id` and `name` attributes) + * from JS variables by prefixing them with the string `user-content-` + */ + SANITIZE_NAMED_PROPS?: boolean | undefined; + /** + * Supplied policy must define `createHTML` and `createScriptURL`. + */ + TRUSTED_TYPES_POLICY?: TrustedTypePolicy | undefined; + /** + * Controls categories of allowed elements. + * + * Note that the `USE_PROFILES` setting will override the `ALLOWED_TAGS` setting + * so don't use them together. + */ + USE_PROFILES?: false | UseProfilesConfig | undefined; + /** + * Return entire document including tags (default is false). + */ + WHOLE_DOCUMENT?: boolean | undefined; +} +/** + * Defines categories of allowed elements. + */ +interface UseProfilesConfig { + /** + * Allow all safe MathML elements. + */ + mathMl?: boolean | undefined; + /** + * Allow all safe SVG elements. + */ + svg?: boolean | undefined; + /** + * Allow all save SVG Filters. + */ + svgFilters?: boolean | undefined; + /** + * Allow all safe HTML elements. + */ + html?: boolean | undefined; +} + +declare const _default: DOMPurify; + +interface DOMPurify { + /** + * Creates a DOMPurify instance using the given window-like object. + */ + (root: WindowLike): DOMPurify; + /** + * Version label, exposed for easier checks + * if DOMPurify is up to date or not + */ + version: string; + /** + * Array of elements that DOMPurify removed during sanitation. + * Empty if nothing was removed. + */ + removed: Array; + /** + * Expose whether this browser supports running the full DOMPurify. + */ + isSupported: boolean; + /** + * Set the configuration once. + * + * @param cfg configuration object + */ + setConfig(cfg?: Config): void; + /** + * Removes the configuration. + */ + clearConfig(): void; + /** + * Provides core sanitation functionality. + * + * @param dirty string or DOM node + * @param cfg object + * @return Sanitized TrustedHTML. + */ + sanitize(dirty: string | Node, cfg: Config & { + RETURN_TRUSTED_TYPE: true; + }): TrustedHTML; + /** + * Provides core sanitation functionality. + * + * @param dirty DOM node + * @param cfg object + * @return Sanitized DOM node. + */ + sanitize(dirty: Node, cfg: Config & { + IN_PLACE: true; + }): Node; + /** + * Provides core sanitation functionality. + * + * @param dirty string or DOM node + * @param cfg object + * @return Sanitized DOM node. + */ + sanitize(dirty: string | Node, cfg: Config & { + RETURN_DOM: true; + }): Node; + /** + * Provides core sanitation functionality. + * + * @param dirty string or DOM node + * @param cfg object + * @return Sanitized document fragment. + */ + sanitize(dirty: string | Node, cfg: Config & { + RETURN_DOM_FRAGMENT: true; + }): DocumentFragment; + /** + * Provides core sanitation functionality. + * + * @param dirty string or DOM node + * @param cfg object + * @return Sanitized string. + */ + sanitize(dirty: string | Node, cfg?: Config): string; + /** + * Checks if an attribute value is valid. + * Uses last set config, if any. Otherwise, uses config defaults. + * + * @param tag Tag name of containing element. + * @param attr Attribute name. + * @param value Attribute value. + * @return Returns true if `value` is valid. Otherwise, returns false. + */ + isValidAttribute(tag: string, attr: string, value: string): boolean; + /** + * Adds a DOMPurify hook. + * + * @param entryPoint entry point for the hook to add + * @param hookFunction function to execute + */ + addHook(entryPoint: 'beforeSanitizeElements' | 'afterSanitizeElements' | 'beforeSanitizeAttributes' | 'afterSanitizeAttributes' | 'beforeSanitizeShadowDOM' | 'uponSanitizeShadowNode' | 'afterSanitizeShadowDOM', hookFunction: Hook): void; + /** + * Adds a DOMPurify hook. + * + * @param entryPoint entry point for the hook to add + * @param hookFunction function to execute + */ + addHook(entryPoint: 'uponSanitizeElement', hookFunction: UponSanitizeElementHook): void; + /** + * Adds a DOMPurify hook. + * + * @param entryPoint entry point for the hook to add + * @param hookFunction function to execute + */ + addHook(entryPoint: 'uponSanitizeAttribute', hookFunction: UponSanitizeAttributeHook): void; + /** + * Remove a DOMPurify hook at a given entryPoint + * (pops it from the stack of hooks if more are present) + * + * @param entryPoint entry point for the hook to remove + * @return removed(popped) hook + */ + removeHook(entryPoint: BasicHookName): Hook | undefined; + /** + * Remove a DOMPurify hook at a given entryPoint + * (pops it from the stack of hooks if more are present) + * + * @param entryPoint entry point for the hook to remove + * @return removed(popped) hook + */ + removeHook(entryPoint: 'uponSanitizeElement'): UponSanitizeElementHook | undefined; + /** + * Remove a DOMPurify hook at a given entryPoint + * (pops it from the stack of hooks if more are present) + * + * @param entryPoint entry point for the hook to remove + * @return removed(popped) hook + */ + removeHook(entryPoint: 'uponSanitizeAttribute'): UponSanitizeAttributeHook | undefined; + /** + * Removes all DOMPurify hooks at a given entryPoint + * + * @param entryPoint entry point for the hooks to remove + */ + removeHooks(entryPoint: HookName): void; + /** + * Removes all DOMPurify hooks. + */ + removeAllHooks(): void; +} +/** + * An element removed by DOMPurify. + */ +interface RemovedElement { + /** + * The element that was removed. + */ + element: Node; +} +/** + * An element removed by DOMPurify. + */ +interface RemovedAttribute { + /** + * The attribute that was removed. + */ + attribute: Attr | null; + /** + * The element that the attribute was removed. + */ + from: Node; +} +type BasicHookName = 'beforeSanitizeElements' | 'afterSanitizeElements' | 'beforeSanitizeAttributes' | 'afterSanitizeAttributes' | 'beforeSanitizeShadowDOM' | 'uponSanitizeShadowNode' | 'afterSanitizeShadowDOM'; +type UponSanitizeElementHookName = 'uponSanitizeElement'; +type UponSanitizeAttributeHookName = 'uponSanitizeAttribute'; +type HookName = BasicHookName | UponSanitizeElementHookName | UponSanitizeAttributeHookName; +type Hook = (this: DOMPurify, currentNode: Node, hookEvent: null, config: Config) => void; +type UponSanitizeElementHook = (this: DOMPurify, currentNode: Node, hookEvent: UponSanitizeElementHookEvent, config: Config) => void; +type UponSanitizeAttributeHook = (this: DOMPurify, currentNode: Node, hookEvent: UponSanitizeAttributeHookEvent, config: Config) => void; +interface UponSanitizeElementHookEvent { + tagName: string; + allowedTags: Record; +} +interface UponSanitizeAttributeHookEvent { + attrName: string; + attrValue: string; + keepAttr: boolean; + allowedAttributes: Record; + forceKeepAttr: boolean | undefined; +} +/** + * A `Window`-like object containing the properties and types that DOMPurify requires. + */ +type WindowLike = Pick & { + document?: Document; + MozNamedAttrMap?: typeof window.NamedNodeMap; + trustedTypes?: typeof window.trustedTypes; +}; + +export { type Hook, type HookName, type RemovedAttribute, type RemovedElement, type UponSanitizeAttributeHook, type UponSanitizeAttributeHookEvent, type UponSanitizeElementHook, type UponSanitizeElementHookEvent, type WindowLike }; + +export = _default; diff --git a/libraries/DOMPurify/dist/purify.cjs.js b/libraries/DOMPurify/dist/purify.cjs.js new file mode 100644 index 0000000..28931c2 --- /dev/null +++ b/libraries/DOMPurify/dist/purify.cjs.js @@ -0,0 +1,1343 @@ +/*! @license DOMPurify 3.1.7 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.7/LICENSE */ + +'use strict'; + +const { + entries, + setPrototypeOf, + isFrozen, + getPrototypeOf, + getOwnPropertyDescriptor +} = Object; +let { + freeze, + seal, + create +} = Object; // eslint-disable-line import/no-mutable-exports +let { + apply, + construct +} = typeof Reflect !== 'undefined' && Reflect; +if (!freeze) { + freeze = function freeze(x) { + return x; + }; +} +if (!seal) { + seal = function seal(x) { + return x; + }; +} +if (!apply) { + apply = function apply(fun, thisValue, args) { + return fun.apply(thisValue, args); + }; +} +if (!construct) { + construct = function construct(Func, args) { + return new Func(...args); + }; +} +const arrayForEach = unapply(Array.prototype.forEach); +const arrayPop = unapply(Array.prototype.pop); +const arrayPush = unapply(Array.prototype.push); +const stringToLowerCase = unapply(String.prototype.toLowerCase); +const stringToString = unapply(String.prototype.toString); +const stringMatch = unapply(String.prototype.match); +const stringReplace = unapply(String.prototype.replace); +const stringIndexOf = unapply(String.prototype.indexOf); +const stringTrim = unapply(String.prototype.trim); +const objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty); +const regExpTest = unapply(RegExp.prototype.test); +const typeErrorCreate = unconstruct(TypeError); +/** + * Creates a new function that calls the given function with a specified thisArg and arguments. + * + * @param func - The function to be wrapped and called. + * @returns A new function that calls the given function with a specified thisArg and arguments. + */ +function unapply(func) { + return function (thisArg) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + return apply(func, thisArg, args); + }; +} +/** + * Creates a new function that constructs an instance of the given constructor function with the provided arguments. + * + * @param func - The constructor function to be wrapped and called. + * @returns A new function that constructs an instance of the given constructor function with the provided arguments. + */ +function unconstruct(func) { + return function () { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + return construct(func, args); + }; +} +/** + * Add properties to a lookup table + * + * @param set - The set to which elements will be added. + * @param array - The array containing elements to be added to the set. + * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set. + * @returns The modified set with added elements. + */ +function addToSet(set, array) { + let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase; + if (setPrototypeOf) { + // Make 'in' and truthy checks like Boolean(set.constructor) + // independent of any properties defined on Object.prototype. + // Prevent prototype setters from intercepting set as a this value. + setPrototypeOf(set, null); + } + let l = array.length; + while (l--) { + let element = array[l]; + if (typeof element === 'string') { + const lcElement = transformCaseFunc(element); + if (lcElement !== element) { + // Config presets (e.g. tags.js, attrs.js) are immutable. + if (!isFrozen(array)) { + array[l] = lcElement; + } + element = lcElement; + } + } + set[element] = true; + } + return set; +} +/** + * Clean up an array to harden against CSPP + * + * @param array - The array to be cleaned. + * @returns The cleaned version of the array + */ +function cleanArray(array) { + for (let index = 0; index < array.length; index++) { + const isPropertyExist = objectHasOwnProperty(array, index); + if (!isPropertyExist) { + array[index] = null; + } + } + return array; +} +/** + * Shallow clone an object + * + * @param object - The object to be cloned. + * @returns A new object that copies the original. + */ +function clone(object) { + const newObject = create(null); + for (const [property, value] of entries(object)) { + const isPropertyExist = objectHasOwnProperty(object, property); + if (isPropertyExist) { + if (Array.isArray(value)) { + newObject[property] = cleanArray(value); + } else if (value && typeof value === 'object' && value.constructor === Object) { + newObject[property] = clone(value); + } else { + newObject[property] = value; + } + } + } + return newObject; +} +/** + * This method automatically checks if the prop is function or getter and behaves accordingly. + * + * @param object - The object to look up the getter function in its prototype chain. + * @param prop - The property name for which to find the getter function. + * @returns The getter function found in the prototype chain or a fallback function. + */ +function lookupGetter(object, prop) { + while (object !== null) { + const desc = getOwnPropertyDescriptor(object, prop); + if (desc) { + if (desc.get) { + return unapply(desc.get); + } + if (typeof desc.value === 'function') { + return unapply(desc.value); + } + } + object = getPrototypeOf(object); + } + function fallbackValue() { + return null; + } + return fallbackValue; +} + +const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']); +// SVG +const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']); +const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']); +// List of SVG elements that are disallowed by default. +// We still need to know them so that we can do namespace +// checks properly in case one wants to add them to +// allow-list. +const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']); +const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']); +// Similarly to SVG, we want to know all MathML elements, +// even those that we disallow by default. +const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']); +const text = freeze(['#text']); + +const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']); +const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']); +const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']); +const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']); + +// eslint-disable-next-line unicorn/better-regex +const MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode +const ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm); +const TMPLIT_EXPR = seal(/\${[\w\W]*}/gm); +const DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]/); // eslint-disable-line no-useless-escape +const ARIA_ATTR = seal(/^aria-[\-\w]+$/); // eslint-disable-line no-useless-escape +const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape +); +const IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i); +const ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g // eslint-disable-line no-control-regex +); +const DOCTYPE_NAME = seal(/^html$/i); +const CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i); + +var EXPRESSIONS = /*#__PURE__*/Object.freeze({ + __proto__: null, + ARIA_ATTR: ARIA_ATTR, + ATTR_WHITESPACE: ATTR_WHITESPACE, + CUSTOM_ELEMENT: CUSTOM_ELEMENT, + DATA_ATTR: DATA_ATTR, + DOCTYPE_NAME: DOCTYPE_NAME, + ERB_EXPR: ERB_EXPR, + IS_ALLOWED_URI: IS_ALLOWED_URI, + IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA, + MUSTACHE_EXPR: MUSTACHE_EXPR, + TMPLIT_EXPR: TMPLIT_EXPR +}); + +/* eslint-disable @typescript-eslint/indent */ +// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType +const NODE_TYPE = { + element: 1, + attribute: 2, + text: 3, + cdataSection: 4, + entityReference: 5, + // Deprecated + entityNode: 6, + // Deprecated + progressingInstruction: 7, + comment: 8, + document: 9, + documentType: 10, + documentFragment: 11, + notation: 12 // Deprecated +}; +const getGlobal = function getGlobal() { + return typeof window === 'undefined' ? null : window; +}; +/** + * Creates a no-op policy for internal use only. + * Don't export this function outside this module! + * @param {TrustedTypePolicyFactory} trustedTypes The policy factory. + * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix). + * @return {TrustedTypePolicy} The policy created (or null, if Trusted Types + * are not supported or creating the policy failed). + */ +const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) { + if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') { + return null; + } + // Allow the callers to control the unique policy name + // by adding a data-tt-policy-suffix to the script element with the DOMPurify. + // Policy creation with duplicate names throws in Trusted Types. + let suffix = null; + const ATTR_NAME = 'data-tt-policy-suffix'; + if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) { + suffix = purifyHostElement.getAttribute(ATTR_NAME); + } + const policyName = 'dompurify' + (suffix ? '#' + suffix : ''); + try { + return trustedTypes.createPolicy(policyName, { + createHTML(html) { + return html; + }, + createScriptURL(scriptUrl) { + return scriptUrl; + } + }); + } catch (_) { + // Policy creation failed (most likely another DOMPurify script has + // already run). Skip creating the policy, as this will only cause errors + // if TT are enforced. + console.warn('TrustedTypes policy ' + policyName + ' could not be created.'); + return null; + } +}; +function createDOMPurify() { + let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal(); + const DOMPurify = root => createDOMPurify(root); + DOMPurify.version = '3.1.7'; + DOMPurify.removed = []; + if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document) { + // Not running in a browser, provide a factory function + // so that you can pass your own Window + DOMPurify.isSupported = false; + return DOMPurify; + } + let { + document + } = window; + const originalDocument = document; + const currentScript = originalDocument.currentScript; + const { + DocumentFragment, + HTMLTemplateElement, + Node, + Element, + NodeFilter, + NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap, + HTMLFormElement, + DOMParser, + trustedTypes + } = window; + const ElementPrototype = Element.prototype; + const cloneNode = lookupGetter(ElementPrototype, 'cloneNode'); + const remove = lookupGetter(ElementPrototype, 'remove'); + const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling'); + const getChildNodes = lookupGetter(ElementPrototype, 'childNodes'); + const getParentNode = lookupGetter(ElementPrototype, 'parentNode'); + // As per issue #47, the web-components registry is inherited by a + // new document created via createHTMLDocument. As per the spec + // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries) + // a new empty registry is used when creating a template contents owner + // document, so we use that as our parent document to ensure nothing + // is inherited. + if (typeof HTMLTemplateElement === 'function') { + const template = document.createElement('template'); + if (template.content && template.content.ownerDocument) { + document = template.content.ownerDocument; + } + } + let trustedTypesPolicy; + let emptyHTML = ''; + const { + implementation, + createNodeIterator, + createDocumentFragment, + getElementsByTagName + } = document; + const { + importNode + } = originalDocument; + let hooks = {}; + /** + * Expose whether this browser supports running the full DOMPurify. + */ + DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined; + const { + MUSTACHE_EXPR, + ERB_EXPR, + TMPLIT_EXPR, + DATA_ATTR, + ARIA_ATTR, + IS_SCRIPT_OR_DATA, + ATTR_WHITESPACE, + CUSTOM_ELEMENT + } = EXPRESSIONS; + let { + IS_ALLOWED_URI: IS_ALLOWED_URI$1 + } = EXPRESSIONS; + /** + * We consider the elements and attributes below to be safe. Ideally + * don't add any new ones but feel free to remove unwanted ones. + */ + /* allowed element names */ + let ALLOWED_TAGS = null; + const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]); + /* Allowed attribute names */ + let ALLOWED_ATTR = null; + const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]); + /* + * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements. + * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements) + * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list) + * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`. + */ + let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, { + tagNameCheck: { + writable: true, + configurable: false, + enumerable: true, + value: null + }, + attributeNameCheck: { + writable: true, + configurable: false, + enumerable: true, + value: null + }, + allowCustomizedBuiltInElements: { + writable: true, + configurable: false, + enumerable: true, + value: false + } + })); + /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */ + let FORBID_TAGS = null; + /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */ + let FORBID_ATTR = null; + /* Decide if ARIA attributes are okay */ + let ALLOW_ARIA_ATTR = true; + /* Decide if custom data attributes are okay */ + let ALLOW_DATA_ATTR = true; + /* Decide if unknown protocols are okay */ + let ALLOW_UNKNOWN_PROTOCOLS = false; + /* Decide if self-closing tags in attributes are allowed. + * Usually removed due to a mXSS issue in jQuery 3.0 */ + let ALLOW_SELF_CLOSE_IN_ATTR = true; + /* Output should be safe for common template engines. + * This means, DOMPurify removes data attributes, mustaches and ERB + */ + let SAFE_FOR_TEMPLATES = false; + /* Output should be safe even for XML used within HTML and alike. + * This means, DOMPurify removes comments when containing risky content. + */ + let SAFE_FOR_XML = true; + /* Decide if document with ... should be returned */ + let WHOLE_DOCUMENT = false; + /* Track whether config is already set on this instance of DOMPurify. */ + let SET_CONFIG = false; + /* Decide if all elements (e.g. style, script) must be children of + * document.body. By default, browsers might move them to document.head */ + let FORCE_BODY = false; + /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html + * string (or a TrustedHTML object if Trusted Types are supported). + * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead + */ + let RETURN_DOM = false; + /* Decide if a DOM `DocumentFragment` should be returned, instead of a html + * string (or a TrustedHTML object if Trusted Types are supported) */ + let RETURN_DOM_FRAGMENT = false; + /* Try to return a Trusted Type object instead of a string, return a string in + * case Trusted Types are not supported */ + let RETURN_TRUSTED_TYPE = false; + /* Output should be free from DOM clobbering attacks? + * This sanitizes markups named with colliding, clobberable built-in DOM APIs. + */ + let SANITIZE_DOM = true; + /* Achieve full DOM Clobbering protection by isolating the namespace of named + * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules. + * + * HTML/DOM spec rules that enable DOM Clobbering: + * - Named Access on Window (§7.3.3) + * - DOM Tree Accessors (§3.1.5) + * - Form Element Parent-Child Relations (§4.10.3) + * - Iframe srcdoc / Nested WindowProxies (§4.8.5) + * - HTMLCollection (§4.2.10.2) + * + * Namespace isolation is implemented by prefixing `id` and `name` attributes + * with a constant string, i.e., `user-content-` + */ + let SANITIZE_NAMED_PROPS = false; + const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-'; + /* Keep element content when removing element? */ + let KEEP_CONTENT = true; + /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead + * of importing it into a new Document and returning a sanitized copy */ + let IN_PLACE = false; + /* Allow usage of profiles like html, svg and mathMl */ + let USE_PROFILES = {}; + /* Tags to ignore content of when KEEP_CONTENT is true */ + let FORBID_CONTENTS = null; + const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']); + /* Tags that are safe for data: URIs */ + let DATA_URI_TAGS = null; + const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']); + /* Attributes safe for values like "javascript:" */ + let URI_SAFE_ATTRIBUTES = null; + const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']); + const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML'; + const SVG_NAMESPACE = 'http://www.w3.org/2000/svg'; + const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml'; + /* Document namespace */ + let NAMESPACE = HTML_NAMESPACE; + let IS_EMPTY_INPUT = false; + /* Allowed XHTML+XML namespaces */ + let ALLOWED_NAMESPACES = null; + const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString); + let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']); + let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']); + // Certain elements are allowed in both SVG and HTML + // namespace. We need to specify them explicitly + // so that they don't get erroneously deleted from + // HTML namespace. + const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']); + /* Parsing of strict XHTML documents */ + let PARSER_MEDIA_TYPE = null; + const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html']; + const DEFAULT_PARSER_MEDIA_TYPE = 'text/html'; + let transformCaseFunc = null; + /* Keep a reference to config to pass to hooks */ + let CONFIG = null; + /* Ideally, do not touch anything below this line */ + /* ______________________________________________ */ + const formElement = document.createElement('form'); + const isRegexOrFunction = function isRegexOrFunction(testValue) { + return testValue instanceof RegExp || testValue instanceof Function; + }; + /** + * _parseConfig + * + * @param {Object} cfg optional config literal + */ + // eslint-disable-next-line complexity + const _parseConfig = function _parseConfig() { + let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + if (CONFIG && CONFIG === cfg) { + return; + } + /* Shield configuration object from tampering */ + if (!cfg || typeof cfg !== 'object') { + cfg = {}; + } + /* Shield configuration object from prototype pollution */ + cfg = clone(cfg); + PARSER_MEDIA_TYPE = + // eslint-disable-next-line unicorn/prefer-includes + SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE; + // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is. + transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase; + /* Set configuration parameters */ + ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS; + ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR; + ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES; + URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES; + DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS; + FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS; + FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {}; + FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {}; + USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false; + ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true + ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true + ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false + ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true + SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false + SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true + WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false + RETURN_DOM = cfg.RETURN_DOM || false; // Default false + RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false + RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false + FORCE_BODY = cfg.FORCE_BODY || false; // Default false + SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true + SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false + KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true + IN_PLACE = cfg.IN_PLACE || false; // Default false + IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI; + NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE; + MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS; + HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS; + CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {}; + if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) { + CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck; + } + if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) { + CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck; + } + if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') { + CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements; + } + if (SAFE_FOR_TEMPLATES) { + ALLOW_DATA_ATTR = false; + } + if (RETURN_DOM_FRAGMENT) { + RETURN_DOM = true; + } + /* Parse profile info */ + if (USE_PROFILES) { + ALLOWED_TAGS = addToSet({}, text); + ALLOWED_ATTR = []; + if (USE_PROFILES.html === true) { + addToSet(ALLOWED_TAGS, html$1); + addToSet(ALLOWED_ATTR, html); + } + if (USE_PROFILES.svg === true) { + addToSet(ALLOWED_TAGS, svg$1); + addToSet(ALLOWED_ATTR, svg); + addToSet(ALLOWED_ATTR, xml); + } + if (USE_PROFILES.svgFilters === true) { + addToSet(ALLOWED_TAGS, svgFilters); + addToSet(ALLOWED_ATTR, svg); + addToSet(ALLOWED_ATTR, xml); + } + if (USE_PROFILES.mathMl === true) { + addToSet(ALLOWED_TAGS, mathMl$1); + addToSet(ALLOWED_ATTR, mathMl); + addToSet(ALLOWED_ATTR, xml); + } + } + /* Merge configuration parameters */ + if (cfg.ADD_TAGS) { + if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) { + ALLOWED_TAGS = clone(ALLOWED_TAGS); + } + addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc); + } + if (cfg.ADD_ATTR) { + if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) { + ALLOWED_ATTR = clone(ALLOWED_ATTR); + } + addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc); + } + if (cfg.ADD_URI_SAFE_ATTR) { + addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc); + } + if (cfg.FORBID_CONTENTS) { + if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) { + FORBID_CONTENTS = clone(FORBID_CONTENTS); + } + addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc); + } + /* Add #text in case KEEP_CONTENT is set to true */ + if (KEEP_CONTENT) { + ALLOWED_TAGS['#text'] = true; + } + /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */ + if (WHOLE_DOCUMENT) { + addToSet(ALLOWED_TAGS, ['html', 'head', 'body']); + } + /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */ + if (ALLOWED_TAGS.table) { + addToSet(ALLOWED_TAGS, ['tbody']); + delete FORBID_TAGS.tbody; + } + if (cfg.TRUSTED_TYPES_POLICY) { + if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') { + throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.'); + } + if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') { + throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.'); + } + // Overwrite existing TrustedTypes policy. + trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY; + // Sign local variables required by `sanitize`. + emptyHTML = trustedTypesPolicy.createHTML(''); + } else { + // Uninitialized policy, attempt to initialize the internal dompurify policy. + if (trustedTypesPolicy === undefined) { + trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript); + } + // If creating the internal policy succeeded sign internal variables. + if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') { + emptyHTML = trustedTypesPolicy.createHTML(''); + } + } + // Prevent further manipulation of configuration. + // Not available in IE8, Safari 5, etc. + if (freeze) { + freeze(cfg); + } + CONFIG = cfg; + }; + /* Keep track of all possible SVG and MathML tags + * so that we can perform the namespace checks + * correctly. */ + const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]); + const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]); + /** + * @param {Element} element a DOM element whose namespace is being checked + * @returns {boolean} Return false if the element has a + * namespace that a spec-compliant parser would never + * return. Return true otherwise. + */ + const _checkValidNamespace = function _checkValidNamespace(element) { + let parent = getParentNode(element); + // In JSDOM, if we're inside shadow DOM, then parentNode + // can be null. We just simulate parent in this case. + if (!parent || !parent.tagName) { + parent = { + namespaceURI: NAMESPACE, + tagName: 'template' + }; + } + const tagName = stringToLowerCase(element.tagName); + const parentTagName = stringToLowerCase(parent.tagName); + if (!ALLOWED_NAMESPACES[element.namespaceURI]) { + return false; + } + if (element.namespaceURI === SVG_NAMESPACE) { + // The only way to switch from HTML namespace to SVG + // is via . If it happens via any other tag, then + // it should be killed. + if (parent.namespaceURI === HTML_NAMESPACE) { + return tagName === 'svg'; + } + // The only way to switch from MathML to SVG is via` + // svg if parent is either or MathML + // text integration points. + if (parent.namespaceURI === MATHML_NAMESPACE) { + return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]); + } + // We only allow elements that are defined in SVG + // spec. All others are disallowed in SVG namespace. + return Boolean(ALL_SVG_TAGS[tagName]); + } + if (element.namespaceURI === MATHML_NAMESPACE) { + // The only way to switch from HTML namespace to MathML + // is via . If it happens via any other tag, then + // it should be killed. + if (parent.namespaceURI === HTML_NAMESPACE) { + return tagName === 'math'; + } + // The only way to switch from SVG to MathML is via + // and HTML integration points + if (parent.namespaceURI === SVG_NAMESPACE) { + return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName]; + } + // We only allow elements that are defined in MathML + // spec. All others are disallowed in MathML namespace. + return Boolean(ALL_MATHML_TAGS[tagName]); + } + if (element.namespaceURI === HTML_NAMESPACE) { + // The only way to switch from SVG to HTML is via + // HTML integration points, and from MathML to HTML + // is via MathML text integration points + if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) { + return false; + } + if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) { + return false; + } + // We disallow tags that are specific for MathML + // or SVG and should never appear in HTML namespace + return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]); + } + // For XHTML and XML documents that support custom namespaces + if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) { + return true; + } + // The code should never reach this place (this means + // that the element somehow got namespace that is not + // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES). + // Return false just in case. + return false; + }; + /** + * _forceRemove + * + * @param {Node} node a DOM node + */ + const _forceRemove = function _forceRemove(node) { + arrayPush(DOMPurify.removed, { + element: node + }); + try { + // eslint-disable-next-line unicorn/prefer-dom-node-remove + getParentNode(node).removeChild(node); + } catch (_) { + remove(node); + } + }; + /** + * _removeAttribute + * + * @param {String} name an Attribute name + * @param {Node} node a DOM node + */ + const _removeAttribute = function _removeAttribute(name, node) { + try { + arrayPush(DOMPurify.removed, { + attribute: node.getAttributeNode(name), + from: node + }); + } catch (_) { + arrayPush(DOMPurify.removed, { + attribute: null, + from: node + }); + } + node.removeAttribute(name); + // We void attribute values for unremovable "is"" attributes + if (name === 'is' && !ALLOWED_ATTR[name]) { + if (RETURN_DOM || RETURN_DOM_FRAGMENT) { + try { + _forceRemove(node); + } catch (_) {} + } else { + try { + node.setAttribute(name, ''); + } catch (_) {} + } + } + }; + /** + * _initDocument + * + * @param {String} dirty a string of dirty markup + * @return {Document} a DOM, filled with the dirty markup + */ + const _initDocument = function _initDocument(dirty) { + /* Create a HTML document */ + let doc = null; + let leadingWhitespace = null; + if (FORCE_BODY) { + dirty = '' + dirty; + } else { + /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */ + const matches = stringMatch(dirty, /^[\r\n\t ]+/); + leadingWhitespace = matches && matches[0]; + } + if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) { + // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict) + dirty = '' + dirty + ''; + } + const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty; + /* + * Use the DOMParser API by default, fallback later if needs be + * DOMParser not work for svg when has multiple root element. + */ + if (NAMESPACE === HTML_NAMESPACE) { + try { + doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE); + } catch (_) {} + } + /* Use createHTMLDocument in case DOMParser is not available */ + if (!doc || !doc.documentElement) { + doc = implementation.createDocument(NAMESPACE, 'template', null); + try { + doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload; + } catch (_) { + // Syntax error if dirtyPayload is invalid xml + } + } + const body = doc.body || doc.documentElement; + if (dirty && leadingWhitespace) { + body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null); + } + /* Work on whole document or just its body */ + if (NAMESPACE === HTML_NAMESPACE) { + return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0]; + } + return WHOLE_DOCUMENT ? doc.documentElement : body; + }; + /** + * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document. + * + * @param {Node} root The root element or node to start traversing on. + * @return {NodeIterator} The created NodeIterator + */ + const _createNodeIterator = function _createNodeIterator(root) { + return createNodeIterator.call(root.ownerDocument || root, root, + // eslint-disable-next-line no-bitwise + NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null); + }; + /** + * _isClobbered + * + * @param {Node} elm element to check for clobbering attacks + * @return {Boolean} true if clobbered, false if safe + */ + const _isClobbered = function _isClobbered(elm) { + return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function'); + }; + /** + * Checks whether the given object is a DOM node. + * + * @param {Node} object object to check whether it's a DOM node + * @return {Boolean} true is object is a DOM node + */ + const _isNode = function _isNode(object) { + return typeof Node === 'function' && object instanceof Node; + }; + /** + * _executeHook + * Execute user configurable hooks + * + * @param entryPoint Name of the hook's entry point + * @param currentNode node to work on with the hook + * @param {Object} data additional hook parameters + */ + function _executeHook(entryPoint, currentNode, data) { + if (!hooks[entryPoint]) { + return; + } + arrayForEach(hooks[entryPoint], hook => { + hook.call(DOMPurify, currentNode, data, CONFIG); + }); + } + /** + * _sanitizeElements + * + * @protect nodeName + * @protect textContent + * @protect removeChild + * + * @param {Node} currentNode to check for permission to exist + * @return {Boolean} true if node was killed, false if left alive + */ + const _sanitizeElements = function _sanitizeElements(currentNode) { + let content = null; + /* Execute a hook if present */ + _executeHook('beforeSanitizeElements', currentNode, null); + /* Check if element is clobbered or can clobber */ + if (_isClobbered(currentNode)) { + _forceRemove(currentNode); + return true; + } + /* Now let's check the element's type and name */ + const tagName = transformCaseFunc(currentNode.nodeName); + /* Execute a hook if present */ + _executeHook('uponSanitizeElement', currentNode, { + tagName, + allowedTags: ALLOWED_TAGS + }); + /* Detect mXSS attempts abusing namespace confusion */ + if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w]/g, currentNode.innerHTML) && regExpTest(/<[/\w]/g, currentNode.textContent)) { + _forceRemove(currentNode); + return true; + } + /* Remove any occurrence of processing instructions */ + if (currentNode.nodeType === NODE_TYPE.progressingInstruction) { + _forceRemove(currentNode); + return true; + } + /* Remove any kind of possibly harmful comments */ + if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\w]/g, currentNode.data)) { + _forceRemove(currentNode); + return true; + } + /* Remove element if anything forbids its presence */ + if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) { + /* Check if we have a custom element to handle */ + if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) { + if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) { + return false; + } + if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) { + return false; + } + } + /* Keep content except for bad-listed elements */ + if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) { + const parentNode = getParentNode(currentNode) || currentNode.parentNode; + const childNodes = getChildNodes(currentNode) || currentNode.childNodes; + if (childNodes && parentNode) { + const childCount = childNodes.length; + for (let i = childCount - 1; i >= 0; --i) { + const childClone = cloneNode(childNodes[i], true); + childClone.__removalCount = (currentNode.__removalCount || 0) + 1; + parentNode.insertBefore(childClone, getNextSibling(currentNode)); + } + } + } + _forceRemove(currentNode); + return true; + } + /* Check whether element has a valid namespace */ + if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) { + _forceRemove(currentNode); + return true; + } + /* Make sure that older browsers don't get fallback-tag mXSS */ + if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) { + _forceRemove(currentNode); + return true; + } + /* Sanitize element content to be template-safe */ + if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) { + /* Get the element's text content */ + content = currentNode.textContent; + arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { + content = stringReplace(content, expr, ' '); + }); + if (currentNode.textContent !== content) { + arrayPush(DOMPurify.removed, { + element: currentNode.cloneNode() + }); + currentNode.textContent = content; + } + } + /* Execute a hook if present */ + _executeHook('afterSanitizeElements', currentNode, null); + return false; + }; + /** + * _isValidAttribute + * + * @param {string} lcTag Lowercase tag name of containing element. + * @param {string} lcName Lowercase attribute name. + * @param {string} value Attribute value. + * @return {Boolean} Returns true if `value` is valid, otherwise false. + */ + // eslint-disable-next-line complexity + const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) { + /* Make sure attribute cannot clobber */ + if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) { + return false; + } + /* Allow valid data-* attributes: At least one character after "-" + (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes) + XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804) + We don't need to check the value; it's always URI safe. */ + if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) { + if ( + // First condition does a very basic check if a) it's basically a valid custom element tagname AND + // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck + // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck + _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || + // Alternative, second condition checks if it's an `is`-attribute, AND + // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck + lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else { + return false; + } + /* Check value is safe. First, is attr inert? If so, is safe */ + } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) { + return false; + } else ; + return true; + }; + /** + * _isBasicCustomElement + * checks if at least one dash is included in tagName, and it's not the first char + * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name + * + * @param {string} tagName name of the tag of the node to sanitize + * @returns {boolean} Returns true if the tag name meets the basic criteria for a custom element, otherwise false. + */ + const _isBasicCustomElement = function _isBasicCustomElement(tagName) { + return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT); + }; + /** + * _sanitizeAttributes + * + * @protect attributes + * @protect nodeName + * @protect removeAttribute + * @protect setAttribute + * + * @param {Node} currentNode to sanitize + */ + const _sanitizeAttributes = function _sanitizeAttributes(currentNode) { + /* Execute a hook if present */ + _executeHook('beforeSanitizeAttributes', currentNode, null); + const { + attributes + } = currentNode; + /* Check if we have attributes; if not we might have a text node */ + if (!attributes) { + return; + } + const hookEvent = { + attrName: '', + attrValue: '', + keepAttr: true, + allowedAttributes: ALLOWED_ATTR, + forceKeepAttr: undefined + }; + let l = attributes.length; + /* Go backwards over all attributes; safely remove bad ones */ + while (l--) { + const attr = attributes[l]; + const { + name, + namespaceURI, + value: attrValue + } = attr; + const lcName = transformCaseFunc(name); + let value = name === 'value' ? attrValue : stringTrim(attrValue); + /* Execute a hook if present */ + hookEvent.attrName = lcName; + hookEvent.attrValue = value; + hookEvent.keepAttr = true; + hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set + _executeHook('uponSanitizeAttribute', currentNode, hookEvent); + value = hookEvent.attrValue; + /* Full DOM Clobbering protection via namespace isolation, + * Prefix id and name attributes with `user-content-` + */ + if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) { + // Remove the attribute with this value + _removeAttribute(name, currentNode); + // Prefix the value and later re-create the attribute with the sanitized value + value = SANITIZE_NAMED_PROPS_PREFIX + value; + } + /* Work around a security issue with comments inside attributes */ + if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title)/i, value)) { + _removeAttribute(name, currentNode); + continue; + } + /* Did the hooks approve of the attribute? */ + if (hookEvent.forceKeepAttr) { + continue; + } + /* Remove attribute */ + _removeAttribute(name, currentNode); + /* Did the hooks approve of the attribute? */ + if (!hookEvent.keepAttr) { + continue; + } + /* Work around a security issue in jQuery 3.0 */ + if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) { + _removeAttribute(name, currentNode); + continue; + } + /* Sanitize attribute content to be template-safe */ + if (SAFE_FOR_TEMPLATES) { + arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { + value = stringReplace(value, expr, ' '); + }); + } + /* Is `value` valid for this attribute? */ + const lcTag = transformCaseFunc(currentNode.nodeName); + if (!_isValidAttribute(lcTag, lcName, value)) { + continue; + } + /* Handle attributes that require Trusted Types */ + if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') { + if (namespaceURI) ; else { + switch (trustedTypes.getAttributeType(lcTag, lcName)) { + case 'TrustedHTML': + { + value = trustedTypesPolicy.createHTML(value); + break; + } + case 'TrustedScriptURL': + { + value = trustedTypesPolicy.createScriptURL(value); + break; + } + } + } + } + /* Handle invalid data-* attribute set by try-catching it */ + try { + if (namespaceURI) { + currentNode.setAttributeNS(namespaceURI, name, value); + } else { + /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */ + currentNode.setAttribute(name, value); + } + if (_isClobbered(currentNode)) { + _forceRemove(currentNode); + } else { + arrayPop(DOMPurify.removed); + } + } catch (_) {} + } + /* Execute a hook if present */ + _executeHook('afterSanitizeAttributes', currentNode, null); + }; + /** + * _sanitizeShadowDOM + * + * @param {DocumentFragment} fragment to iterate over recursively + */ + const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) { + let shadowNode = null; + const shadowIterator = _createNodeIterator(fragment); + /* Execute a hook if present */ + _executeHook('beforeSanitizeShadowDOM', fragment, null); + while (shadowNode = shadowIterator.nextNode()) { + /* Execute a hook if present */ + _executeHook('uponSanitizeShadowNode', shadowNode, null); + /* Sanitize tags and elements */ + if (_sanitizeElements(shadowNode)) { + continue; + } + /* Deep shadow DOM detected */ + if (shadowNode.content instanceof DocumentFragment) { + _sanitizeShadowDOM(shadowNode.content); + } + /* Check attributes, sanitize if necessary */ + _sanitizeAttributes(shadowNode); + } + /* Execute a hook if present */ + _executeHook('afterSanitizeShadowDOM', fragment, null); + }; + // eslint-disable-next-line complexity + DOMPurify.sanitize = function (dirty) { + let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let body = null; + let importedNode = null; + let currentNode = null; + let returnNode = null; + /* Make sure we have a string to sanitize. + DO NOT return early, as this will return the wrong type if + the user has requested a DOM object rather than a string */ + IS_EMPTY_INPUT = !dirty; + if (IS_EMPTY_INPUT) { + dirty = ''; + } + /* Stringify, in case dirty is an object */ + if (typeof dirty !== 'string' && !_isNode(dirty)) { + if (typeof dirty.toString === 'function') { + dirty = dirty.toString(); + if (typeof dirty !== 'string') { + throw typeErrorCreate('dirty is not a string, aborting'); + } + } else { + throw typeErrorCreate('toString is not a function'); + } + } + /* Return dirty HTML if DOMPurify cannot run */ + if (!DOMPurify.isSupported) { + return dirty; + } + /* Assign config vars */ + if (!SET_CONFIG) { + _parseConfig(cfg); + } + /* Clean up removed elements */ + DOMPurify.removed = []; + /* Check if dirty is correctly typed for IN_PLACE */ + if (typeof dirty === 'string') { + IN_PLACE = false; + } + if (IN_PLACE) { + /* Do some early pre-sanitization to avoid unsafe root nodes */ + if (dirty.nodeName) { + const tagName = transformCaseFunc(dirty.nodeName); + if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) { + throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place'); + } + } + } else if (dirty instanceof Node) { + /* If dirty is a DOM element, append to an empty document to avoid + elements being stripped by the parser */ + body = _initDocument(''); + importedNode = body.ownerDocument.importNode(dirty, true); + if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') { + /* Node is already a body, use as is */ + body = importedNode; + } else if (importedNode.nodeName === 'HTML') { + body = importedNode; + } else { + // eslint-disable-next-line unicorn/prefer-dom-node-append + body.appendChild(importedNode); + } + } else { + /* Exit directly if we have nothing to do */ + if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && + // eslint-disable-next-line unicorn/prefer-includes + dirty.indexOf('<') === -1) { + return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty; + } + /* Initialize the document to work on */ + body = _initDocument(dirty); + /* Check we have a DOM node from the data */ + if (!body) { + return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : ''; + } + } + /* Remove first element node (ours) if FORCE_BODY is set */ + if (body && FORCE_BODY) { + _forceRemove(body.firstChild); + } + /* Get node iterator */ + const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body); + /* Now start iterating over the created document */ + while (currentNode = nodeIterator.nextNode()) { + /* Sanitize tags and elements */ + if (_sanitizeElements(currentNode)) { + continue; + } + /* Shadow DOM detected, sanitize it */ + if (currentNode.content instanceof DocumentFragment) { + _sanitizeShadowDOM(currentNode.content); + } + /* Check attributes, sanitize if necessary */ + _sanitizeAttributes(currentNode); + } + /* If we sanitized `dirty` in-place, return it. */ + if (IN_PLACE) { + return dirty; + } + /* Return sanitized string or DOM */ + if (RETURN_DOM) { + if (RETURN_DOM_FRAGMENT) { + returnNode = createDocumentFragment.call(body.ownerDocument); + while (body.firstChild) { + // eslint-disable-next-line unicorn/prefer-dom-node-append + returnNode.appendChild(body.firstChild); + } + } else { + returnNode = body; + } + if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) { + /* + AdoptNode() is not used because internal state is not reset + (e.g. the past names map of a HTMLFormElement), this is safe + in theory but we would rather not risk another attack vector. + The state that is cloned by importNode() is explicitly defined + by the specs. + */ + returnNode = importNode.call(originalDocument, returnNode, true); + } + return returnNode; + } + let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML; + /* Serialize doctype if allowed */ + if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) { + serializedHTML = '\n' + serializedHTML; + } + /* Sanitize final string template-safe */ + if (SAFE_FOR_TEMPLATES) { + arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { + serializedHTML = stringReplace(serializedHTML, expr, ' '); + }); + } + return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML; + }; + DOMPurify.setConfig = function () { + let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + _parseConfig(cfg); + SET_CONFIG = true; + }; + DOMPurify.clearConfig = function () { + CONFIG = null; + SET_CONFIG = false; + }; + DOMPurify.isValidAttribute = function (tag, attr, value) { + /* Initialize shared config vars if necessary. */ + if (!CONFIG) { + _parseConfig({}); + } + const lcTag = transformCaseFunc(tag); + const lcName = transformCaseFunc(attr); + return _isValidAttribute(lcTag, lcName, value); + }; + DOMPurify.addHook = function (entryPoint, hookFunction) { + if (typeof hookFunction !== 'function') { + return; + } + hooks[entryPoint] = hooks[entryPoint] || []; + arrayPush(hooks[entryPoint], hookFunction); + }; + DOMPurify.removeHook = function (entryPoint) { + if (hooks[entryPoint]) { + return arrayPop(hooks[entryPoint]); + } + }; + DOMPurify.removeHooks = function (entryPoint) { + if (hooks[entryPoint]) { + hooks[entryPoint] = []; + } + }; + DOMPurify.removeAllHooks = function () { + hooks = {}; + }; + return DOMPurify; +} +var purify = createDOMPurify(); + +module.exports = purify; +//# sourceMappingURL=purify.cjs.js.map diff --git a/libraries/DOMPurify/dist/purify.cjs.js.map b/libraries/DOMPurify/dist/purify.cjs.js.map new file mode 100644 index 0000000..cd325e0 --- /dev/null +++ b/libraries/DOMPurify/dist/purify.cjs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"purify.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/libraries/DOMPurify/dist/purify.es.d.mts b/libraries/DOMPurify/dist/purify.es.d.mts new file mode 100644 index 0000000..e157171 --- /dev/null +++ b/libraries/DOMPurify/dist/purify.es.d.mts @@ -0,0 +1,399 @@ +/*! @license DOMPurify 3.1.7 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.7/LICENSE */ + +/** + * Configuration to control DOMPurify behavior. + */ +interface Config { + /** + * Extend the existing array of allowed attributes. + */ + ADD_ATTR?: string[] | undefined; + /** + * Extend the existing array of elements that can use Data URIs. + */ + ADD_DATA_URI_TAGS?: string[] | undefined; + /** + * Extend the existing array of allowed tags. + */ + ADD_TAGS?: string[] | undefined; + /** + * Extend the existing array of elements that are safe for URI-like values (be careful, XSS risk). + */ + ADD_URI_SAFE_ATTR?: string[] | undefined; + /** + * Allow ARIA attributes, leave other safe HTML as is (default is true). + */ + ALLOW_ARIA_ATTR?: boolean | undefined; + /** + * Allow HTML5 data attributes, leave other safe HTML as is (default is true). + */ + ALLOW_DATA_ATTR?: boolean | undefined; + /** + * Allow external protocol handlers in URL attributes (default is false, be careful, XSS risk). + * By default only `http`, `https`, `ftp`, `ftps`, `tel`, `mailto`, `callto`, `sms`, `cid` and `xmpp` are allowed. + */ + ALLOW_UNKNOWN_PROTOCOLS?: boolean | undefined; + /** + * Decide if self-closing tags in attributes are allowed. + * Usually removed due to a mXSS issue in jQuery 3.0. + */ + ALLOW_SELF_CLOSE_IN_ATTR?: boolean | undefined; + /** + * Allow only specific attributes. + */ + ALLOWED_ATTR?: string[] | undefined; + /** + * Allow only specific elements. + */ + ALLOWED_TAGS?: string[] | undefined; + /** + * Allow only specific namespaces. Defaults to: + * - `http://www.w3.org/1999/xhtml` + * - `http://www.w3.org/2000/svg` + * - `http://www.w3.org/1998/Math/MathML` + */ + ALLOWED_NAMESPACES?: string[] | undefined; + /** + * Allow specific protocols handlers in URL attributes via regex (be careful, XSS risk). + * Default RegExp: + * ``` + * /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i; + * ``` + */ + ALLOWED_URI_REGEXP?: RegExp | undefined; + /** + * Define how custom elements are handled. + */ + CUSTOM_ELEMENT_HANDLING?: { + /** + * Regular expression or function to match to allowed elements. + * Default is null (disallow any custom elements). + */ + tagNameCheck?: RegExp | ((tagName: string) => boolean) | null | undefined; + /** + * Regular expression or function to match to allowed attributes. + * Default is null (disallow any attributes not on the allow list). + */ + attributeNameCheck?: RegExp | ((attributeName: string) => boolean) | null | undefined; + /** + * Allow custom elements derived from built-ins if they pass `tagNameCheck`. Default is false. + */ + allowCustomizedBuiltInElements?: boolean | undefined; + }; + /** + * Add attributes to block-list. + */ + FORBID_ATTR?: string[] | undefined; + /** + * Add child elements to be removed when their parent is removed. + */ + FORBID_CONTENTS?: string[] | undefined; + /** + * Add elements to block-list. + */ + FORBID_TAGS?: string[] | undefined; + /** + * Glue elements like style, script or others to `document.body` and prevent unintuitive browser behavior in several edge-cases (default is false). + */ + FORCE_BODY?: boolean | undefined; + /** + * Map of non-standard HTML element names to support. Map to true to enable support. For example: + * + * ``` + * HTML_INTEGRATION_POINTS: { foreignobject: true } + * ``` + */ + HTML_INTEGRATION_POINTS?: Record | undefined; + /** + * Sanitize a node "in place", which is much faster depending on how you use DOMPurify. + */ + IN_PLACE?: boolean | undefined; + /** + * Keep an element's content when the element is removed (default is true). + */ + KEEP_CONTENT?: boolean | undefined; + /** + * Map of MathML element names to support. Map to true to enable support. For example: + * + * ``` + * MATHML_TEXT_INTEGRATION_POINTS: { mtext: true } + * ``` + */ + MATHML_TEXT_INTEGRATION_POINTS?: Record | undefined; + /** + * Change the default namespace from HTML to something different. + */ + NAMESPACE?: string | undefined; + /** + * Change the parser type so sanitized data is treated as XML and not as HTML, which is the default. + */ + PARSER_MEDIA_TYPE?: DOMParserSupportedType | undefined; + /** + * Return a DOM `DocumentFragment` instead of an HTML string (default is false). + */ + RETURN_DOM_FRAGMENT?: boolean | undefined; + /** + * Return a DOM `HTMLBodyElement` instead of an HTML string (default is false). + */ + RETURN_DOM?: boolean | undefined; + /** + * Return a TrustedHTML object instead of a string if possible. + */ + RETURN_TRUSTED_TYPE?: boolean | undefined; + /** + * Strip `{{ ... }}`, `${ ... }` and `<% ... %>` to make output safe for template systems. + * Be careful please, this mode is not recommended for production usage. + * Allowing template parsing in user-controlled HTML is not advised at all. + * Only use this mode if there is really no alternative. + */ + SAFE_FOR_TEMPLATES?: boolean | undefined; + /** + * Change how e.g. comments containing risky HTML characters are treated. + * Be very careful, this setting should only be set to `false` if you really only handle + * HTML and nothing else, no SVG, MathML or the like. + * Otherwise, changing from `true` to `false` will lead to XSS in this or some other way. + */ + SAFE_FOR_XML?: boolean | undefined; + /** + * Use DOM Clobbering protection on output (default is true, handle with care, minor XSS risks here). + */ + SANITIZE_DOM?: boolean | undefined; + /** + * Enforce strict DOM Clobbering protection via namespace isolation (default is false). + * When enabled, isolates the namespace of named properties (i.e., `id` and `name` attributes) + * from JS variables by prefixing them with the string `user-content-` + */ + SANITIZE_NAMED_PROPS?: boolean | undefined; + /** + * Supplied policy must define `createHTML` and `createScriptURL`. + */ + TRUSTED_TYPES_POLICY?: TrustedTypePolicy | undefined; + /** + * Controls categories of allowed elements. + * + * Note that the `USE_PROFILES` setting will override the `ALLOWED_TAGS` setting + * so don't use them together. + */ + USE_PROFILES?: false | UseProfilesConfig | undefined; + /** + * Return entire document including tags (default is false). + */ + WHOLE_DOCUMENT?: boolean | undefined; +} +/** + * Defines categories of allowed elements. + */ +interface UseProfilesConfig { + /** + * Allow all safe MathML elements. + */ + mathMl?: boolean | undefined; + /** + * Allow all safe SVG elements. + */ + svg?: boolean | undefined; + /** + * Allow all save SVG Filters. + */ + svgFilters?: boolean | undefined; + /** + * Allow all safe HTML elements. + */ + html?: boolean | undefined; +} + +declare const _default: DOMPurify; + +interface DOMPurify { + /** + * Creates a DOMPurify instance using the given window-like object. + */ + (root: WindowLike): DOMPurify; + /** + * Version label, exposed for easier checks + * if DOMPurify is up to date or not + */ + version: string; + /** + * Array of elements that DOMPurify removed during sanitation. + * Empty if nothing was removed. + */ + removed: Array; + /** + * Expose whether this browser supports running the full DOMPurify. + */ + isSupported: boolean; + /** + * Set the configuration once. + * + * @param cfg configuration object + */ + setConfig(cfg?: Config): void; + /** + * Removes the configuration. + */ + clearConfig(): void; + /** + * Provides core sanitation functionality. + * + * @param dirty string or DOM node + * @param cfg object + * @return Sanitized TrustedHTML. + */ + sanitize(dirty: string | Node, cfg: Config & { + RETURN_TRUSTED_TYPE: true; + }): TrustedHTML; + /** + * Provides core sanitation functionality. + * + * @param dirty DOM node + * @param cfg object + * @return Sanitized DOM node. + */ + sanitize(dirty: Node, cfg: Config & { + IN_PLACE: true; + }): Node; + /** + * Provides core sanitation functionality. + * + * @param dirty string or DOM node + * @param cfg object + * @return Sanitized DOM node. + */ + sanitize(dirty: string | Node, cfg: Config & { + RETURN_DOM: true; + }): Node; + /** + * Provides core sanitation functionality. + * + * @param dirty string or DOM node + * @param cfg object + * @return Sanitized document fragment. + */ + sanitize(dirty: string | Node, cfg: Config & { + RETURN_DOM_FRAGMENT: true; + }): DocumentFragment; + /** + * Provides core sanitation functionality. + * + * @param dirty string or DOM node + * @param cfg object + * @return Sanitized string. + */ + sanitize(dirty: string | Node, cfg?: Config): string; + /** + * Checks if an attribute value is valid. + * Uses last set config, if any. Otherwise, uses config defaults. + * + * @param tag Tag name of containing element. + * @param attr Attribute name. + * @param value Attribute value. + * @return Returns true if `value` is valid. Otherwise, returns false. + */ + isValidAttribute(tag: string, attr: string, value: string): boolean; + /** + * Adds a DOMPurify hook. + * + * @param entryPoint entry point for the hook to add + * @param hookFunction function to execute + */ + addHook(entryPoint: 'beforeSanitizeElements' | 'afterSanitizeElements' | 'beforeSanitizeAttributes' | 'afterSanitizeAttributes' | 'beforeSanitizeShadowDOM' | 'uponSanitizeShadowNode' | 'afterSanitizeShadowDOM', hookFunction: Hook): void; + /** + * Adds a DOMPurify hook. + * + * @param entryPoint entry point for the hook to add + * @param hookFunction function to execute + */ + addHook(entryPoint: 'uponSanitizeElement', hookFunction: UponSanitizeElementHook): void; + /** + * Adds a DOMPurify hook. + * + * @param entryPoint entry point for the hook to add + * @param hookFunction function to execute + */ + addHook(entryPoint: 'uponSanitizeAttribute', hookFunction: UponSanitizeAttributeHook): void; + /** + * Remove a DOMPurify hook at a given entryPoint + * (pops it from the stack of hooks if more are present) + * + * @param entryPoint entry point for the hook to remove + * @return removed(popped) hook + */ + removeHook(entryPoint: BasicHookName): Hook | undefined; + /** + * Remove a DOMPurify hook at a given entryPoint + * (pops it from the stack of hooks if more are present) + * + * @param entryPoint entry point for the hook to remove + * @return removed(popped) hook + */ + removeHook(entryPoint: 'uponSanitizeElement'): UponSanitizeElementHook | undefined; + /** + * Remove a DOMPurify hook at a given entryPoint + * (pops it from the stack of hooks if more are present) + * + * @param entryPoint entry point for the hook to remove + * @return removed(popped) hook + */ + removeHook(entryPoint: 'uponSanitizeAttribute'): UponSanitizeAttributeHook | undefined; + /** + * Removes all DOMPurify hooks at a given entryPoint + * + * @param entryPoint entry point for the hooks to remove + */ + removeHooks(entryPoint: HookName): void; + /** + * Removes all DOMPurify hooks. + */ + removeAllHooks(): void; +} +/** + * An element removed by DOMPurify. + */ +interface RemovedElement { + /** + * The element that was removed. + */ + element: Node; +} +/** + * An element removed by DOMPurify. + */ +interface RemovedAttribute { + /** + * The attribute that was removed. + */ + attribute: Attr | null; + /** + * The element that the attribute was removed. + */ + from: Node; +} +type BasicHookName = 'beforeSanitizeElements' | 'afterSanitizeElements' | 'beforeSanitizeAttributes' | 'afterSanitizeAttributes' | 'beforeSanitizeShadowDOM' | 'uponSanitizeShadowNode' | 'afterSanitizeShadowDOM'; +type UponSanitizeElementHookName = 'uponSanitizeElement'; +type UponSanitizeAttributeHookName = 'uponSanitizeAttribute'; +type HookName = BasicHookName | UponSanitizeElementHookName | UponSanitizeAttributeHookName; +type Hook = (this: DOMPurify, currentNode: Node, hookEvent: null, config: Config) => void; +type UponSanitizeElementHook = (this: DOMPurify, currentNode: Node, hookEvent: UponSanitizeElementHookEvent, config: Config) => void; +type UponSanitizeAttributeHook = (this: DOMPurify, currentNode: Node, hookEvent: UponSanitizeAttributeHookEvent, config: Config) => void; +interface UponSanitizeElementHookEvent { + tagName: string; + allowedTags: Record; +} +interface UponSanitizeAttributeHookEvent { + attrName: string; + attrValue: string; + keepAttr: boolean; + allowedAttributes: Record; + forceKeepAttr: boolean | undefined; +} +/** + * A `Window`-like object containing the properties and types that DOMPurify requires. + */ +type WindowLike = Pick & { + document?: Document; + MozNamedAttrMap?: typeof window.NamedNodeMap; + trustedTypes?: typeof window.trustedTypes; +}; + +export { type Hook, type HookName, type RemovedAttribute, type RemovedElement, type UponSanitizeAttributeHook, type UponSanitizeAttributeHookEvent, type UponSanitizeElementHook, type UponSanitizeElementHookEvent, type WindowLike, _default as default }; diff --git a/libraries/DOMPurify/dist/purify.es.mjs b/libraries/DOMPurify/dist/purify.es.mjs new file mode 100644 index 0000000..e18d606 --- /dev/null +++ b/libraries/DOMPurify/dist/purify.es.mjs @@ -0,0 +1,1341 @@ +/*! @license DOMPurify 3.1.7 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.7/LICENSE */ + +const { + entries, + setPrototypeOf, + isFrozen, + getPrototypeOf, + getOwnPropertyDescriptor +} = Object; +let { + freeze, + seal, + create +} = Object; // eslint-disable-line import/no-mutable-exports +let { + apply, + construct +} = typeof Reflect !== 'undefined' && Reflect; +if (!freeze) { + freeze = function freeze(x) { + return x; + }; +} +if (!seal) { + seal = function seal(x) { + return x; + }; +} +if (!apply) { + apply = function apply(fun, thisValue, args) { + return fun.apply(thisValue, args); + }; +} +if (!construct) { + construct = function construct(Func, args) { + return new Func(...args); + }; +} +const arrayForEach = unapply(Array.prototype.forEach); +const arrayPop = unapply(Array.prototype.pop); +const arrayPush = unapply(Array.prototype.push); +const stringToLowerCase = unapply(String.prototype.toLowerCase); +const stringToString = unapply(String.prototype.toString); +const stringMatch = unapply(String.prototype.match); +const stringReplace = unapply(String.prototype.replace); +const stringIndexOf = unapply(String.prototype.indexOf); +const stringTrim = unapply(String.prototype.trim); +const objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty); +const regExpTest = unapply(RegExp.prototype.test); +const typeErrorCreate = unconstruct(TypeError); +/** + * Creates a new function that calls the given function with a specified thisArg and arguments. + * + * @param func - The function to be wrapped and called. + * @returns A new function that calls the given function with a specified thisArg and arguments. + */ +function unapply(func) { + return function (thisArg) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + return apply(func, thisArg, args); + }; +} +/** + * Creates a new function that constructs an instance of the given constructor function with the provided arguments. + * + * @param func - The constructor function to be wrapped and called. + * @returns A new function that constructs an instance of the given constructor function with the provided arguments. + */ +function unconstruct(func) { + return function () { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + return construct(func, args); + }; +} +/** + * Add properties to a lookup table + * + * @param set - The set to which elements will be added. + * @param array - The array containing elements to be added to the set. + * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set. + * @returns The modified set with added elements. + */ +function addToSet(set, array) { + let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase; + if (setPrototypeOf) { + // Make 'in' and truthy checks like Boolean(set.constructor) + // independent of any properties defined on Object.prototype. + // Prevent prototype setters from intercepting set as a this value. + setPrototypeOf(set, null); + } + let l = array.length; + while (l--) { + let element = array[l]; + if (typeof element === 'string') { + const lcElement = transformCaseFunc(element); + if (lcElement !== element) { + // Config presets (e.g. tags.js, attrs.js) are immutable. + if (!isFrozen(array)) { + array[l] = lcElement; + } + element = lcElement; + } + } + set[element] = true; + } + return set; +} +/** + * Clean up an array to harden against CSPP + * + * @param array - The array to be cleaned. + * @returns The cleaned version of the array + */ +function cleanArray(array) { + for (let index = 0; index < array.length; index++) { + const isPropertyExist = objectHasOwnProperty(array, index); + if (!isPropertyExist) { + array[index] = null; + } + } + return array; +} +/** + * Shallow clone an object + * + * @param object - The object to be cloned. + * @returns A new object that copies the original. + */ +function clone(object) { + const newObject = create(null); + for (const [property, value] of entries(object)) { + const isPropertyExist = objectHasOwnProperty(object, property); + if (isPropertyExist) { + if (Array.isArray(value)) { + newObject[property] = cleanArray(value); + } else if (value && typeof value === 'object' && value.constructor === Object) { + newObject[property] = clone(value); + } else { + newObject[property] = value; + } + } + } + return newObject; +} +/** + * This method automatically checks if the prop is function or getter and behaves accordingly. + * + * @param object - The object to look up the getter function in its prototype chain. + * @param prop - The property name for which to find the getter function. + * @returns The getter function found in the prototype chain or a fallback function. + */ +function lookupGetter(object, prop) { + while (object !== null) { + const desc = getOwnPropertyDescriptor(object, prop); + if (desc) { + if (desc.get) { + return unapply(desc.get); + } + if (typeof desc.value === 'function') { + return unapply(desc.value); + } + } + object = getPrototypeOf(object); + } + function fallbackValue() { + return null; + } + return fallbackValue; +} + +const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']); +// SVG +const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']); +const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']); +// List of SVG elements that are disallowed by default. +// We still need to know them so that we can do namespace +// checks properly in case one wants to add them to +// allow-list. +const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']); +const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']); +// Similarly to SVG, we want to know all MathML elements, +// even those that we disallow by default. +const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']); +const text = freeze(['#text']); + +const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']); +const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']); +const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']); +const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']); + +// eslint-disable-next-line unicorn/better-regex +const MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode +const ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm); +const TMPLIT_EXPR = seal(/\${[\w\W]*}/gm); +const DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]/); // eslint-disable-line no-useless-escape +const ARIA_ATTR = seal(/^aria-[\-\w]+$/); // eslint-disable-line no-useless-escape +const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape +); +const IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i); +const ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g // eslint-disable-line no-control-regex +); +const DOCTYPE_NAME = seal(/^html$/i); +const CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i); + +var EXPRESSIONS = /*#__PURE__*/Object.freeze({ + __proto__: null, + ARIA_ATTR: ARIA_ATTR, + ATTR_WHITESPACE: ATTR_WHITESPACE, + CUSTOM_ELEMENT: CUSTOM_ELEMENT, + DATA_ATTR: DATA_ATTR, + DOCTYPE_NAME: DOCTYPE_NAME, + ERB_EXPR: ERB_EXPR, + IS_ALLOWED_URI: IS_ALLOWED_URI, + IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA, + MUSTACHE_EXPR: MUSTACHE_EXPR, + TMPLIT_EXPR: TMPLIT_EXPR +}); + +/* eslint-disable @typescript-eslint/indent */ +// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType +const NODE_TYPE = { + element: 1, + attribute: 2, + text: 3, + cdataSection: 4, + entityReference: 5, + // Deprecated + entityNode: 6, + // Deprecated + progressingInstruction: 7, + comment: 8, + document: 9, + documentType: 10, + documentFragment: 11, + notation: 12 // Deprecated +}; +const getGlobal = function getGlobal() { + return typeof window === 'undefined' ? null : window; +}; +/** + * Creates a no-op policy for internal use only. + * Don't export this function outside this module! + * @param {TrustedTypePolicyFactory} trustedTypes The policy factory. + * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix). + * @return {TrustedTypePolicy} The policy created (or null, if Trusted Types + * are not supported or creating the policy failed). + */ +const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) { + if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') { + return null; + } + // Allow the callers to control the unique policy name + // by adding a data-tt-policy-suffix to the script element with the DOMPurify. + // Policy creation with duplicate names throws in Trusted Types. + let suffix = null; + const ATTR_NAME = 'data-tt-policy-suffix'; + if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) { + suffix = purifyHostElement.getAttribute(ATTR_NAME); + } + const policyName = 'dompurify' + (suffix ? '#' + suffix : ''); + try { + return trustedTypes.createPolicy(policyName, { + createHTML(html) { + return html; + }, + createScriptURL(scriptUrl) { + return scriptUrl; + } + }); + } catch (_) { + // Policy creation failed (most likely another DOMPurify script has + // already run). Skip creating the policy, as this will only cause errors + // if TT are enforced. + console.warn('TrustedTypes policy ' + policyName + ' could not be created.'); + return null; + } +}; +function createDOMPurify() { + let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal(); + const DOMPurify = root => createDOMPurify(root); + DOMPurify.version = '3.1.7'; + DOMPurify.removed = []; + if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document) { + // Not running in a browser, provide a factory function + // so that you can pass your own Window + DOMPurify.isSupported = false; + return DOMPurify; + } + let { + document + } = window; + const originalDocument = document; + const currentScript = originalDocument.currentScript; + const { + DocumentFragment, + HTMLTemplateElement, + Node, + Element, + NodeFilter, + NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap, + HTMLFormElement, + DOMParser, + trustedTypes + } = window; + const ElementPrototype = Element.prototype; + const cloneNode = lookupGetter(ElementPrototype, 'cloneNode'); + const remove = lookupGetter(ElementPrototype, 'remove'); + const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling'); + const getChildNodes = lookupGetter(ElementPrototype, 'childNodes'); + const getParentNode = lookupGetter(ElementPrototype, 'parentNode'); + // As per issue #47, the web-components registry is inherited by a + // new document created via createHTMLDocument. As per the spec + // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries) + // a new empty registry is used when creating a template contents owner + // document, so we use that as our parent document to ensure nothing + // is inherited. + if (typeof HTMLTemplateElement === 'function') { + const template = document.createElement('template'); + if (template.content && template.content.ownerDocument) { + document = template.content.ownerDocument; + } + } + let trustedTypesPolicy; + let emptyHTML = ''; + const { + implementation, + createNodeIterator, + createDocumentFragment, + getElementsByTagName + } = document; + const { + importNode + } = originalDocument; + let hooks = {}; + /** + * Expose whether this browser supports running the full DOMPurify. + */ + DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined; + const { + MUSTACHE_EXPR, + ERB_EXPR, + TMPLIT_EXPR, + DATA_ATTR, + ARIA_ATTR, + IS_SCRIPT_OR_DATA, + ATTR_WHITESPACE, + CUSTOM_ELEMENT + } = EXPRESSIONS; + let { + IS_ALLOWED_URI: IS_ALLOWED_URI$1 + } = EXPRESSIONS; + /** + * We consider the elements and attributes below to be safe. Ideally + * don't add any new ones but feel free to remove unwanted ones. + */ + /* allowed element names */ + let ALLOWED_TAGS = null; + const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]); + /* Allowed attribute names */ + let ALLOWED_ATTR = null; + const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]); + /* + * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements. + * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements) + * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list) + * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`. + */ + let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, { + tagNameCheck: { + writable: true, + configurable: false, + enumerable: true, + value: null + }, + attributeNameCheck: { + writable: true, + configurable: false, + enumerable: true, + value: null + }, + allowCustomizedBuiltInElements: { + writable: true, + configurable: false, + enumerable: true, + value: false + } + })); + /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */ + let FORBID_TAGS = null; + /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */ + let FORBID_ATTR = null; + /* Decide if ARIA attributes are okay */ + let ALLOW_ARIA_ATTR = true; + /* Decide if custom data attributes are okay */ + let ALLOW_DATA_ATTR = true; + /* Decide if unknown protocols are okay */ + let ALLOW_UNKNOWN_PROTOCOLS = false; + /* Decide if self-closing tags in attributes are allowed. + * Usually removed due to a mXSS issue in jQuery 3.0 */ + let ALLOW_SELF_CLOSE_IN_ATTR = true; + /* Output should be safe for common template engines. + * This means, DOMPurify removes data attributes, mustaches and ERB + */ + let SAFE_FOR_TEMPLATES = false; + /* Output should be safe even for XML used within HTML and alike. + * This means, DOMPurify removes comments when containing risky content. + */ + let SAFE_FOR_XML = true; + /* Decide if document with ... should be returned */ + let WHOLE_DOCUMENT = false; + /* Track whether config is already set on this instance of DOMPurify. */ + let SET_CONFIG = false; + /* Decide if all elements (e.g. style, script) must be children of + * document.body. By default, browsers might move them to document.head */ + let FORCE_BODY = false; + /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html + * string (or a TrustedHTML object if Trusted Types are supported). + * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead + */ + let RETURN_DOM = false; + /* Decide if a DOM `DocumentFragment` should be returned, instead of a html + * string (or a TrustedHTML object if Trusted Types are supported) */ + let RETURN_DOM_FRAGMENT = false; + /* Try to return a Trusted Type object instead of a string, return a string in + * case Trusted Types are not supported */ + let RETURN_TRUSTED_TYPE = false; + /* Output should be free from DOM clobbering attacks? + * This sanitizes markups named with colliding, clobberable built-in DOM APIs. + */ + let SANITIZE_DOM = true; + /* Achieve full DOM Clobbering protection by isolating the namespace of named + * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules. + * + * HTML/DOM spec rules that enable DOM Clobbering: + * - Named Access on Window (§7.3.3) + * - DOM Tree Accessors (§3.1.5) + * - Form Element Parent-Child Relations (§4.10.3) + * - Iframe srcdoc / Nested WindowProxies (§4.8.5) + * - HTMLCollection (§4.2.10.2) + * + * Namespace isolation is implemented by prefixing `id` and `name` attributes + * with a constant string, i.e., `user-content-` + */ + let SANITIZE_NAMED_PROPS = false; + const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-'; + /* Keep element content when removing element? */ + let KEEP_CONTENT = true; + /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead + * of importing it into a new Document and returning a sanitized copy */ + let IN_PLACE = false; + /* Allow usage of profiles like html, svg and mathMl */ + let USE_PROFILES = {}; + /* Tags to ignore content of when KEEP_CONTENT is true */ + let FORBID_CONTENTS = null; + const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']); + /* Tags that are safe for data: URIs */ + let DATA_URI_TAGS = null; + const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']); + /* Attributes safe for values like "javascript:" */ + let URI_SAFE_ATTRIBUTES = null; + const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']); + const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML'; + const SVG_NAMESPACE = 'http://www.w3.org/2000/svg'; + const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml'; + /* Document namespace */ + let NAMESPACE = HTML_NAMESPACE; + let IS_EMPTY_INPUT = false; + /* Allowed XHTML+XML namespaces */ + let ALLOWED_NAMESPACES = null; + const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString); + let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']); + let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']); + // Certain elements are allowed in both SVG and HTML + // namespace. We need to specify them explicitly + // so that they don't get erroneously deleted from + // HTML namespace. + const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']); + /* Parsing of strict XHTML documents */ + let PARSER_MEDIA_TYPE = null; + const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html']; + const DEFAULT_PARSER_MEDIA_TYPE = 'text/html'; + let transformCaseFunc = null; + /* Keep a reference to config to pass to hooks */ + let CONFIG = null; + /* Ideally, do not touch anything below this line */ + /* ______________________________________________ */ + const formElement = document.createElement('form'); + const isRegexOrFunction = function isRegexOrFunction(testValue) { + return testValue instanceof RegExp || testValue instanceof Function; + }; + /** + * _parseConfig + * + * @param {Object} cfg optional config literal + */ + // eslint-disable-next-line complexity + const _parseConfig = function _parseConfig() { + let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + if (CONFIG && CONFIG === cfg) { + return; + } + /* Shield configuration object from tampering */ + if (!cfg || typeof cfg !== 'object') { + cfg = {}; + } + /* Shield configuration object from prototype pollution */ + cfg = clone(cfg); + PARSER_MEDIA_TYPE = + // eslint-disable-next-line unicorn/prefer-includes + SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE; + // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is. + transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase; + /* Set configuration parameters */ + ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS; + ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR; + ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES; + URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES; + DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS; + FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS; + FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {}; + FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {}; + USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false; + ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true + ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true + ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false + ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true + SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false + SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true + WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false + RETURN_DOM = cfg.RETURN_DOM || false; // Default false + RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false + RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false + FORCE_BODY = cfg.FORCE_BODY || false; // Default false + SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true + SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false + KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true + IN_PLACE = cfg.IN_PLACE || false; // Default false + IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI; + NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE; + MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS; + HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS; + CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {}; + if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) { + CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck; + } + if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) { + CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck; + } + if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') { + CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements; + } + if (SAFE_FOR_TEMPLATES) { + ALLOW_DATA_ATTR = false; + } + if (RETURN_DOM_FRAGMENT) { + RETURN_DOM = true; + } + /* Parse profile info */ + if (USE_PROFILES) { + ALLOWED_TAGS = addToSet({}, text); + ALLOWED_ATTR = []; + if (USE_PROFILES.html === true) { + addToSet(ALLOWED_TAGS, html$1); + addToSet(ALLOWED_ATTR, html); + } + if (USE_PROFILES.svg === true) { + addToSet(ALLOWED_TAGS, svg$1); + addToSet(ALLOWED_ATTR, svg); + addToSet(ALLOWED_ATTR, xml); + } + if (USE_PROFILES.svgFilters === true) { + addToSet(ALLOWED_TAGS, svgFilters); + addToSet(ALLOWED_ATTR, svg); + addToSet(ALLOWED_ATTR, xml); + } + if (USE_PROFILES.mathMl === true) { + addToSet(ALLOWED_TAGS, mathMl$1); + addToSet(ALLOWED_ATTR, mathMl); + addToSet(ALLOWED_ATTR, xml); + } + } + /* Merge configuration parameters */ + if (cfg.ADD_TAGS) { + if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) { + ALLOWED_TAGS = clone(ALLOWED_TAGS); + } + addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc); + } + if (cfg.ADD_ATTR) { + if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) { + ALLOWED_ATTR = clone(ALLOWED_ATTR); + } + addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc); + } + if (cfg.ADD_URI_SAFE_ATTR) { + addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc); + } + if (cfg.FORBID_CONTENTS) { + if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) { + FORBID_CONTENTS = clone(FORBID_CONTENTS); + } + addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc); + } + /* Add #text in case KEEP_CONTENT is set to true */ + if (KEEP_CONTENT) { + ALLOWED_TAGS['#text'] = true; + } + /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */ + if (WHOLE_DOCUMENT) { + addToSet(ALLOWED_TAGS, ['html', 'head', 'body']); + } + /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */ + if (ALLOWED_TAGS.table) { + addToSet(ALLOWED_TAGS, ['tbody']); + delete FORBID_TAGS.tbody; + } + if (cfg.TRUSTED_TYPES_POLICY) { + if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') { + throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.'); + } + if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') { + throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.'); + } + // Overwrite existing TrustedTypes policy. + trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY; + // Sign local variables required by `sanitize`. + emptyHTML = trustedTypesPolicy.createHTML(''); + } else { + // Uninitialized policy, attempt to initialize the internal dompurify policy. + if (trustedTypesPolicy === undefined) { + trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript); + } + // If creating the internal policy succeeded sign internal variables. + if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') { + emptyHTML = trustedTypesPolicy.createHTML(''); + } + } + // Prevent further manipulation of configuration. + // Not available in IE8, Safari 5, etc. + if (freeze) { + freeze(cfg); + } + CONFIG = cfg; + }; + /* Keep track of all possible SVG and MathML tags + * so that we can perform the namespace checks + * correctly. */ + const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]); + const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]); + /** + * @param {Element} element a DOM element whose namespace is being checked + * @returns {boolean} Return false if the element has a + * namespace that a spec-compliant parser would never + * return. Return true otherwise. + */ + const _checkValidNamespace = function _checkValidNamespace(element) { + let parent = getParentNode(element); + // In JSDOM, if we're inside shadow DOM, then parentNode + // can be null. We just simulate parent in this case. + if (!parent || !parent.tagName) { + parent = { + namespaceURI: NAMESPACE, + tagName: 'template' + }; + } + const tagName = stringToLowerCase(element.tagName); + const parentTagName = stringToLowerCase(parent.tagName); + if (!ALLOWED_NAMESPACES[element.namespaceURI]) { + return false; + } + if (element.namespaceURI === SVG_NAMESPACE) { + // The only way to switch from HTML namespace to SVG + // is via . If it happens via any other tag, then + // it should be killed. + if (parent.namespaceURI === HTML_NAMESPACE) { + return tagName === 'svg'; + } + // The only way to switch from MathML to SVG is via` + // svg if parent is either or MathML + // text integration points. + if (parent.namespaceURI === MATHML_NAMESPACE) { + return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]); + } + // We only allow elements that are defined in SVG + // spec. All others are disallowed in SVG namespace. + return Boolean(ALL_SVG_TAGS[tagName]); + } + if (element.namespaceURI === MATHML_NAMESPACE) { + // The only way to switch from HTML namespace to MathML + // is via . If it happens via any other tag, then + // it should be killed. + if (parent.namespaceURI === HTML_NAMESPACE) { + return tagName === 'math'; + } + // The only way to switch from SVG to MathML is via + // and HTML integration points + if (parent.namespaceURI === SVG_NAMESPACE) { + return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName]; + } + // We only allow elements that are defined in MathML + // spec. All others are disallowed in MathML namespace. + return Boolean(ALL_MATHML_TAGS[tagName]); + } + if (element.namespaceURI === HTML_NAMESPACE) { + // The only way to switch from SVG to HTML is via + // HTML integration points, and from MathML to HTML + // is via MathML text integration points + if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) { + return false; + } + if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) { + return false; + } + // We disallow tags that are specific for MathML + // or SVG and should never appear in HTML namespace + return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]); + } + // For XHTML and XML documents that support custom namespaces + if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) { + return true; + } + // The code should never reach this place (this means + // that the element somehow got namespace that is not + // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES). + // Return false just in case. + return false; + }; + /** + * _forceRemove + * + * @param {Node} node a DOM node + */ + const _forceRemove = function _forceRemove(node) { + arrayPush(DOMPurify.removed, { + element: node + }); + try { + // eslint-disable-next-line unicorn/prefer-dom-node-remove + getParentNode(node).removeChild(node); + } catch (_) { + remove(node); + } + }; + /** + * _removeAttribute + * + * @param {String} name an Attribute name + * @param {Node} node a DOM node + */ + const _removeAttribute = function _removeAttribute(name, node) { + try { + arrayPush(DOMPurify.removed, { + attribute: node.getAttributeNode(name), + from: node + }); + } catch (_) { + arrayPush(DOMPurify.removed, { + attribute: null, + from: node + }); + } + node.removeAttribute(name); + // We void attribute values for unremovable "is"" attributes + if (name === 'is' && !ALLOWED_ATTR[name]) { + if (RETURN_DOM || RETURN_DOM_FRAGMENT) { + try { + _forceRemove(node); + } catch (_) {} + } else { + try { + node.setAttribute(name, ''); + } catch (_) {} + } + } + }; + /** + * _initDocument + * + * @param {String} dirty a string of dirty markup + * @return {Document} a DOM, filled with the dirty markup + */ + const _initDocument = function _initDocument(dirty) { + /* Create a HTML document */ + let doc = null; + let leadingWhitespace = null; + if (FORCE_BODY) { + dirty = '' + dirty; + } else { + /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */ + const matches = stringMatch(dirty, /^[\r\n\t ]+/); + leadingWhitespace = matches && matches[0]; + } + if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) { + // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict) + dirty = '' + dirty + ''; + } + const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty; + /* + * Use the DOMParser API by default, fallback later if needs be + * DOMParser not work for svg when has multiple root element. + */ + if (NAMESPACE === HTML_NAMESPACE) { + try { + doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE); + } catch (_) {} + } + /* Use createHTMLDocument in case DOMParser is not available */ + if (!doc || !doc.documentElement) { + doc = implementation.createDocument(NAMESPACE, 'template', null); + try { + doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload; + } catch (_) { + // Syntax error if dirtyPayload is invalid xml + } + } + const body = doc.body || doc.documentElement; + if (dirty && leadingWhitespace) { + body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null); + } + /* Work on whole document or just its body */ + if (NAMESPACE === HTML_NAMESPACE) { + return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0]; + } + return WHOLE_DOCUMENT ? doc.documentElement : body; + }; + /** + * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document. + * + * @param {Node} root The root element or node to start traversing on. + * @return {NodeIterator} The created NodeIterator + */ + const _createNodeIterator = function _createNodeIterator(root) { + return createNodeIterator.call(root.ownerDocument || root, root, + // eslint-disable-next-line no-bitwise + NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null); + }; + /** + * _isClobbered + * + * @param {Node} elm element to check for clobbering attacks + * @return {Boolean} true if clobbered, false if safe + */ + const _isClobbered = function _isClobbered(elm) { + return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function'); + }; + /** + * Checks whether the given object is a DOM node. + * + * @param {Node} object object to check whether it's a DOM node + * @return {Boolean} true is object is a DOM node + */ + const _isNode = function _isNode(object) { + return typeof Node === 'function' && object instanceof Node; + }; + /** + * _executeHook + * Execute user configurable hooks + * + * @param entryPoint Name of the hook's entry point + * @param currentNode node to work on with the hook + * @param {Object} data additional hook parameters + */ + function _executeHook(entryPoint, currentNode, data) { + if (!hooks[entryPoint]) { + return; + } + arrayForEach(hooks[entryPoint], hook => { + hook.call(DOMPurify, currentNode, data, CONFIG); + }); + } + /** + * _sanitizeElements + * + * @protect nodeName + * @protect textContent + * @protect removeChild + * + * @param {Node} currentNode to check for permission to exist + * @return {Boolean} true if node was killed, false if left alive + */ + const _sanitizeElements = function _sanitizeElements(currentNode) { + let content = null; + /* Execute a hook if present */ + _executeHook('beforeSanitizeElements', currentNode, null); + /* Check if element is clobbered or can clobber */ + if (_isClobbered(currentNode)) { + _forceRemove(currentNode); + return true; + } + /* Now let's check the element's type and name */ + const tagName = transformCaseFunc(currentNode.nodeName); + /* Execute a hook if present */ + _executeHook('uponSanitizeElement', currentNode, { + tagName, + allowedTags: ALLOWED_TAGS + }); + /* Detect mXSS attempts abusing namespace confusion */ + if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w]/g, currentNode.innerHTML) && regExpTest(/<[/\w]/g, currentNode.textContent)) { + _forceRemove(currentNode); + return true; + } + /* Remove any occurrence of processing instructions */ + if (currentNode.nodeType === NODE_TYPE.progressingInstruction) { + _forceRemove(currentNode); + return true; + } + /* Remove any kind of possibly harmful comments */ + if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\w]/g, currentNode.data)) { + _forceRemove(currentNode); + return true; + } + /* Remove element if anything forbids its presence */ + if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) { + /* Check if we have a custom element to handle */ + if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) { + if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) { + return false; + } + if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) { + return false; + } + } + /* Keep content except for bad-listed elements */ + if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) { + const parentNode = getParentNode(currentNode) || currentNode.parentNode; + const childNodes = getChildNodes(currentNode) || currentNode.childNodes; + if (childNodes && parentNode) { + const childCount = childNodes.length; + for (let i = childCount - 1; i >= 0; --i) { + const childClone = cloneNode(childNodes[i], true); + childClone.__removalCount = (currentNode.__removalCount || 0) + 1; + parentNode.insertBefore(childClone, getNextSibling(currentNode)); + } + } + } + _forceRemove(currentNode); + return true; + } + /* Check whether element has a valid namespace */ + if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) { + _forceRemove(currentNode); + return true; + } + /* Make sure that older browsers don't get fallback-tag mXSS */ + if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) { + _forceRemove(currentNode); + return true; + } + /* Sanitize element content to be template-safe */ + if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) { + /* Get the element's text content */ + content = currentNode.textContent; + arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { + content = stringReplace(content, expr, ' '); + }); + if (currentNode.textContent !== content) { + arrayPush(DOMPurify.removed, { + element: currentNode.cloneNode() + }); + currentNode.textContent = content; + } + } + /* Execute a hook if present */ + _executeHook('afterSanitizeElements', currentNode, null); + return false; + }; + /** + * _isValidAttribute + * + * @param {string} lcTag Lowercase tag name of containing element. + * @param {string} lcName Lowercase attribute name. + * @param {string} value Attribute value. + * @return {Boolean} Returns true if `value` is valid, otherwise false. + */ + // eslint-disable-next-line complexity + const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) { + /* Make sure attribute cannot clobber */ + if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) { + return false; + } + /* Allow valid data-* attributes: At least one character after "-" + (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes) + XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804) + We don't need to check the value; it's always URI safe. */ + if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) { + if ( + // First condition does a very basic check if a) it's basically a valid custom element tagname AND + // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck + // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck + _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || + // Alternative, second condition checks if it's an `is`-attribute, AND + // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck + lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else { + return false; + } + /* Check value is safe. First, is attr inert? If so, is safe */ + } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) { + return false; + } else ; + return true; + }; + /** + * _isBasicCustomElement + * checks if at least one dash is included in tagName, and it's not the first char + * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name + * + * @param {string} tagName name of the tag of the node to sanitize + * @returns {boolean} Returns true if the tag name meets the basic criteria for a custom element, otherwise false. + */ + const _isBasicCustomElement = function _isBasicCustomElement(tagName) { + return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT); + }; + /** + * _sanitizeAttributes + * + * @protect attributes + * @protect nodeName + * @protect removeAttribute + * @protect setAttribute + * + * @param {Node} currentNode to sanitize + */ + const _sanitizeAttributes = function _sanitizeAttributes(currentNode) { + /* Execute a hook if present */ + _executeHook('beforeSanitizeAttributes', currentNode, null); + const { + attributes + } = currentNode; + /* Check if we have attributes; if not we might have a text node */ + if (!attributes) { + return; + } + const hookEvent = { + attrName: '', + attrValue: '', + keepAttr: true, + allowedAttributes: ALLOWED_ATTR, + forceKeepAttr: undefined + }; + let l = attributes.length; + /* Go backwards over all attributes; safely remove bad ones */ + while (l--) { + const attr = attributes[l]; + const { + name, + namespaceURI, + value: attrValue + } = attr; + const lcName = transformCaseFunc(name); + let value = name === 'value' ? attrValue : stringTrim(attrValue); + /* Execute a hook if present */ + hookEvent.attrName = lcName; + hookEvent.attrValue = value; + hookEvent.keepAttr = true; + hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set + _executeHook('uponSanitizeAttribute', currentNode, hookEvent); + value = hookEvent.attrValue; + /* Full DOM Clobbering protection via namespace isolation, + * Prefix id and name attributes with `user-content-` + */ + if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) { + // Remove the attribute with this value + _removeAttribute(name, currentNode); + // Prefix the value and later re-create the attribute with the sanitized value + value = SANITIZE_NAMED_PROPS_PREFIX + value; + } + /* Work around a security issue with comments inside attributes */ + if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title)/i, value)) { + _removeAttribute(name, currentNode); + continue; + } + /* Did the hooks approve of the attribute? */ + if (hookEvent.forceKeepAttr) { + continue; + } + /* Remove attribute */ + _removeAttribute(name, currentNode); + /* Did the hooks approve of the attribute? */ + if (!hookEvent.keepAttr) { + continue; + } + /* Work around a security issue in jQuery 3.0 */ + if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) { + _removeAttribute(name, currentNode); + continue; + } + /* Sanitize attribute content to be template-safe */ + if (SAFE_FOR_TEMPLATES) { + arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { + value = stringReplace(value, expr, ' '); + }); + } + /* Is `value` valid for this attribute? */ + const lcTag = transformCaseFunc(currentNode.nodeName); + if (!_isValidAttribute(lcTag, lcName, value)) { + continue; + } + /* Handle attributes that require Trusted Types */ + if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') { + if (namespaceURI) ; else { + switch (trustedTypes.getAttributeType(lcTag, lcName)) { + case 'TrustedHTML': + { + value = trustedTypesPolicy.createHTML(value); + break; + } + case 'TrustedScriptURL': + { + value = trustedTypesPolicy.createScriptURL(value); + break; + } + } + } + } + /* Handle invalid data-* attribute set by try-catching it */ + try { + if (namespaceURI) { + currentNode.setAttributeNS(namespaceURI, name, value); + } else { + /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */ + currentNode.setAttribute(name, value); + } + if (_isClobbered(currentNode)) { + _forceRemove(currentNode); + } else { + arrayPop(DOMPurify.removed); + } + } catch (_) {} + } + /* Execute a hook if present */ + _executeHook('afterSanitizeAttributes', currentNode, null); + }; + /** + * _sanitizeShadowDOM + * + * @param {DocumentFragment} fragment to iterate over recursively + */ + const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) { + let shadowNode = null; + const shadowIterator = _createNodeIterator(fragment); + /* Execute a hook if present */ + _executeHook('beforeSanitizeShadowDOM', fragment, null); + while (shadowNode = shadowIterator.nextNode()) { + /* Execute a hook if present */ + _executeHook('uponSanitizeShadowNode', shadowNode, null); + /* Sanitize tags and elements */ + if (_sanitizeElements(shadowNode)) { + continue; + } + /* Deep shadow DOM detected */ + if (shadowNode.content instanceof DocumentFragment) { + _sanitizeShadowDOM(shadowNode.content); + } + /* Check attributes, sanitize if necessary */ + _sanitizeAttributes(shadowNode); + } + /* Execute a hook if present */ + _executeHook('afterSanitizeShadowDOM', fragment, null); + }; + // eslint-disable-next-line complexity + DOMPurify.sanitize = function (dirty) { + let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let body = null; + let importedNode = null; + let currentNode = null; + let returnNode = null; + /* Make sure we have a string to sanitize. + DO NOT return early, as this will return the wrong type if + the user has requested a DOM object rather than a string */ + IS_EMPTY_INPUT = !dirty; + if (IS_EMPTY_INPUT) { + dirty = ''; + } + /* Stringify, in case dirty is an object */ + if (typeof dirty !== 'string' && !_isNode(dirty)) { + if (typeof dirty.toString === 'function') { + dirty = dirty.toString(); + if (typeof dirty !== 'string') { + throw typeErrorCreate('dirty is not a string, aborting'); + } + } else { + throw typeErrorCreate('toString is not a function'); + } + } + /* Return dirty HTML if DOMPurify cannot run */ + if (!DOMPurify.isSupported) { + return dirty; + } + /* Assign config vars */ + if (!SET_CONFIG) { + _parseConfig(cfg); + } + /* Clean up removed elements */ + DOMPurify.removed = []; + /* Check if dirty is correctly typed for IN_PLACE */ + if (typeof dirty === 'string') { + IN_PLACE = false; + } + if (IN_PLACE) { + /* Do some early pre-sanitization to avoid unsafe root nodes */ + if (dirty.nodeName) { + const tagName = transformCaseFunc(dirty.nodeName); + if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) { + throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place'); + } + } + } else if (dirty instanceof Node) { + /* If dirty is a DOM element, append to an empty document to avoid + elements being stripped by the parser */ + body = _initDocument(''); + importedNode = body.ownerDocument.importNode(dirty, true); + if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') { + /* Node is already a body, use as is */ + body = importedNode; + } else if (importedNode.nodeName === 'HTML') { + body = importedNode; + } else { + // eslint-disable-next-line unicorn/prefer-dom-node-append + body.appendChild(importedNode); + } + } else { + /* Exit directly if we have nothing to do */ + if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && + // eslint-disable-next-line unicorn/prefer-includes + dirty.indexOf('<') === -1) { + return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty; + } + /* Initialize the document to work on */ + body = _initDocument(dirty); + /* Check we have a DOM node from the data */ + if (!body) { + return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : ''; + } + } + /* Remove first element node (ours) if FORCE_BODY is set */ + if (body && FORCE_BODY) { + _forceRemove(body.firstChild); + } + /* Get node iterator */ + const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body); + /* Now start iterating over the created document */ + while (currentNode = nodeIterator.nextNode()) { + /* Sanitize tags and elements */ + if (_sanitizeElements(currentNode)) { + continue; + } + /* Shadow DOM detected, sanitize it */ + if (currentNode.content instanceof DocumentFragment) { + _sanitizeShadowDOM(currentNode.content); + } + /* Check attributes, sanitize if necessary */ + _sanitizeAttributes(currentNode); + } + /* If we sanitized `dirty` in-place, return it. */ + if (IN_PLACE) { + return dirty; + } + /* Return sanitized string or DOM */ + if (RETURN_DOM) { + if (RETURN_DOM_FRAGMENT) { + returnNode = createDocumentFragment.call(body.ownerDocument); + while (body.firstChild) { + // eslint-disable-next-line unicorn/prefer-dom-node-append + returnNode.appendChild(body.firstChild); + } + } else { + returnNode = body; + } + if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) { + /* + AdoptNode() is not used because internal state is not reset + (e.g. the past names map of a HTMLFormElement), this is safe + in theory but we would rather not risk another attack vector. + The state that is cloned by importNode() is explicitly defined + by the specs. + */ + returnNode = importNode.call(originalDocument, returnNode, true); + } + return returnNode; + } + let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML; + /* Serialize doctype if allowed */ + if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) { + serializedHTML = '\n' + serializedHTML; + } + /* Sanitize final string template-safe */ + if (SAFE_FOR_TEMPLATES) { + arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { + serializedHTML = stringReplace(serializedHTML, expr, ' '); + }); + } + return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML; + }; + DOMPurify.setConfig = function () { + let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + _parseConfig(cfg); + SET_CONFIG = true; + }; + DOMPurify.clearConfig = function () { + CONFIG = null; + SET_CONFIG = false; + }; + DOMPurify.isValidAttribute = function (tag, attr, value) { + /* Initialize shared config vars if necessary. */ + if (!CONFIG) { + _parseConfig({}); + } + const lcTag = transformCaseFunc(tag); + const lcName = transformCaseFunc(attr); + return _isValidAttribute(lcTag, lcName, value); + }; + DOMPurify.addHook = function (entryPoint, hookFunction) { + if (typeof hookFunction !== 'function') { + return; + } + hooks[entryPoint] = hooks[entryPoint] || []; + arrayPush(hooks[entryPoint], hookFunction); + }; + DOMPurify.removeHook = function (entryPoint) { + if (hooks[entryPoint]) { + return arrayPop(hooks[entryPoint]); + } + }; + DOMPurify.removeHooks = function (entryPoint) { + if (hooks[entryPoint]) { + hooks[entryPoint] = []; + } + }; + DOMPurify.removeAllHooks = function () { + hooks = {}; + }; + return DOMPurify; +} +var purify = createDOMPurify(); + +export { purify as default }; +//# sourceMappingURL=purify.es.mjs.map diff --git a/libraries/DOMPurify/dist/purify.es.mjs.map b/libraries/DOMPurify/dist/purify.es.mjs.map new file mode 100644 index 0000000..475a9f4 --- /dev/null +++ b/libraries/DOMPurify/dist/purify.es.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"purify.es.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/libraries/DOMPurify/dist/purify.js b/libraries/DOMPurify/dist/purify.js new file mode 100644 index 0000000..3c00864 --- /dev/null +++ b/libraries/DOMPurify/dist/purify.js @@ -0,0 +1,1349 @@ +/*! @license DOMPurify 3.1.7 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.7/LICENSE */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.DOMPurify = factory()); +})(this, (function () { 'use strict'; + + const { + entries, + setPrototypeOf, + isFrozen, + getPrototypeOf, + getOwnPropertyDescriptor + } = Object; + let { + freeze, + seal, + create + } = Object; // eslint-disable-line import/no-mutable-exports + let { + apply, + construct + } = typeof Reflect !== 'undefined' && Reflect; + if (!freeze) { + freeze = function freeze(x) { + return x; + }; + } + if (!seal) { + seal = function seal(x) { + return x; + }; + } + if (!apply) { + apply = function apply(fun, thisValue, args) { + return fun.apply(thisValue, args); + }; + } + if (!construct) { + construct = function construct(Func, args) { + return new Func(...args); + }; + } + const arrayForEach = unapply(Array.prototype.forEach); + const arrayPop = unapply(Array.prototype.pop); + const arrayPush = unapply(Array.prototype.push); + const stringToLowerCase = unapply(String.prototype.toLowerCase); + const stringToString = unapply(String.prototype.toString); + const stringMatch = unapply(String.prototype.match); + const stringReplace = unapply(String.prototype.replace); + const stringIndexOf = unapply(String.prototype.indexOf); + const stringTrim = unapply(String.prototype.trim); + const objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty); + const regExpTest = unapply(RegExp.prototype.test); + const typeErrorCreate = unconstruct(TypeError); + /** + * Creates a new function that calls the given function with a specified thisArg and arguments. + * + * @param func - The function to be wrapped and called. + * @returns A new function that calls the given function with a specified thisArg and arguments. + */ + function unapply(func) { + return function (thisArg) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + return apply(func, thisArg, args); + }; + } + /** + * Creates a new function that constructs an instance of the given constructor function with the provided arguments. + * + * @param func - The constructor function to be wrapped and called. + * @returns A new function that constructs an instance of the given constructor function with the provided arguments. + */ + function unconstruct(func) { + return function () { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + return construct(func, args); + }; + } + /** + * Add properties to a lookup table + * + * @param set - The set to which elements will be added. + * @param array - The array containing elements to be added to the set. + * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set. + * @returns The modified set with added elements. + */ + function addToSet(set, array) { + let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase; + if (setPrototypeOf) { + // Make 'in' and truthy checks like Boolean(set.constructor) + // independent of any properties defined on Object.prototype. + // Prevent prototype setters from intercepting set as a this value. + setPrototypeOf(set, null); + } + let l = array.length; + while (l--) { + let element = array[l]; + if (typeof element === 'string') { + const lcElement = transformCaseFunc(element); + if (lcElement !== element) { + // Config presets (e.g. tags.js, attrs.js) are immutable. + if (!isFrozen(array)) { + array[l] = lcElement; + } + element = lcElement; + } + } + set[element] = true; + } + return set; + } + /** + * Clean up an array to harden against CSPP + * + * @param array - The array to be cleaned. + * @returns The cleaned version of the array + */ + function cleanArray(array) { + for (let index = 0; index < array.length; index++) { + const isPropertyExist = objectHasOwnProperty(array, index); + if (!isPropertyExist) { + array[index] = null; + } + } + return array; + } + /** + * Shallow clone an object + * + * @param object - The object to be cloned. + * @returns A new object that copies the original. + */ + function clone(object) { + const newObject = create(null); + for (const [property, value] of entries(object)) { + const isPropertyExist = objectHasOwnProperty(object, property); + if (isPropertyExist) { + if (Array.isArray(value)) { + newObject[property] = cleanArray(value); + } else if (value && typeof value === 'object' && value.constructor === Object) { + newObject[property] = clone(value); + } else { + newObject[property] = value; + } + } + } + return newObject; + } + /** + * This method automatically checks if the prop is function or getter and behaves accordingly. + * + * @param object - The object to look up the getter function in its prototype chain. + * @param prop - The property name for which to find the getter function. + * @returns The getter function found in the prototype chain or a fallback function. + */ + function lookupGetter(object, prop) { + while (object !== null) { + const desc = getOwnPropertyDescriptor(object, prop); + if (desc) { + if (desc.get) { + return unapply(desc.get); + } + if (typeof desc.value === 'function') { + return unapply(desc.value); + } + } + object = getPrototypeOf(object); + } + function fallbackValue() { + return null; + } + return fallbackValue; + } + + const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']); + // SVG + const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']); + const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']); + // List of SVG elements that are disallowed by default. + // We still need to know them so that we can do namespace + // checks properly in case one wants to add them to + // allow-list. + const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']); + const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']); + // Similarly to SVG, we want to know all MathML elements, + // even those that we disallow by default. + const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']); + const text = freeze(['#text']); + + const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']); + const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']); + const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']); + const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']); + + // eslint-disable-next-line unicorn/better-regex + const MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode + const ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm); + const TMPLIT_EXPR = seal(/\${[\w\W]*}/gm); + const DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]/); // eslint-disable-line no-useless-escape + const ARIA_ATTR = seal(/^aria-[\-\w]+$/); // eslint-disable-line no-useless-escape + const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape + ); + const IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i); + const ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g // eslint-disable-line no-control-regex + ); + const DOCTYPE_NAME = seal(/^html$/i); + const CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i); + + var EXPRESSIONS = /*#__PURE__*/Object.freeze({ + __proto__: null, + ARIA_ATTR: ARIA_ATTR, + ATTR_WHITESPACE: ATTR_WHITESPACE, + CUSTOM_ELEMENT: CUSTOM_ELEMENT, + DATA_ATTR: DATA_ATTR, + DOCTYPE_NAME: DOCTYPE_NAME, + ERB_EXPR: ERB_EXPR, + IS_ALLOWED_URI: IS_ALLOWED_URI, + IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA, + MUSTACHE_EXPR: MUSTACHE_EXPR, + TMPLIT_EXPR: TMPLIT_EXPR + }); + + /* eslint-disable @typescript-eslint/indent */ + // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType + const NODE_TYPE = { + element: 1, + attribute: 2, + text: 3, + cdataSection: 4, + entityReference: 5, + // Deprecated + entityNode: 6, + // Deprecated + progressingInstruction: 7, + comment: 8, + document: 9, + documentType: 10, + documentFragment: 11, + notation: 12 // Deprecated + }; + const getGlobal = function getGlobal() { + return typeof window === 'undefined' ? null : window; + }; + /** + * Creates a no-op policy for internal use only. + * Don't export this function outside this module! + * @param {TrustedTypePolicyFactory} trustedTypes The policy factory. + * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix). + * @return {TrustedTypePolicy} The policy created (or null, if Trusted Types + * are not supported or creating the policy failed). + */ + const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) { + if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') { + return null; + } + // Allow the callers to control the unique policy name + // by adding a data-tt-policy-suffix to the script element with the DOMPurify. + // Policy creation with duplicate names throws in Trusted Types. + let suffix = null; + const ATTR_NAME = 'data-tt-policy-suffix'; + if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) { + suffix = purifyHostElement.getAttribute(ATTR_NAME); + } + const policyName = 'dompurify' + (suffix ? '#' + suffix : ''); + try { + return trustedTypes.createPolicy(policyName, { + createHTML(html) { + return html; + }, + createScriptURL(scriptUrl) { + return scriptUrl; + } + }); + } catch (_) { + // Policy creation failed (most likely another DOMPurify script has + // already run). Skip creating the policy, as this will only cause errors + // if TT are enforced. + console.warn('TrustedTypes policy ' + policyName + ' could not be created.'); + return null; + } + }; + function createDOMPurify() { + let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal(); + const DOMPurify = root => createDOMPurify(root); + DOMPurify.version = '3.1.7'; + DOMPurify.removed = []; + if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document) { + // Not running in a browser, provide a factory function + // so that you can pass your own Window + DOMPurify.isSupported = false; + return DOMPurify; + } + let { + document + } = window; + const originalDocument = document; + const currentScript = originalDocument.currentScript; + const { + DocumentFragment, + HTMLTemplateElement, + Node, + Element, + NodeFilter, + NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap, + HTMLFormElement, + DOMParser, + trustedTypes + } = window; + const ElementPrototype = Element.prototype; + const cloneNode = lookupGetter(ElementPrototype, 'cloneNode'); + const remove = lookupGetter(ElementPrototype, 'remove'); + const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling'); + const getChildNodes = lookupGetter(ElementPrototype, 'childNodes'); + const getParentNode = lookupGetter(ElementPrototype, 'parentNode'); + // As per issue #47, the web-components registry is inherited by a + // new document created via createHTMLDocument. As per the spec + // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries) + // a new empty registry is used when creating a template contents owner + // document, so we use that as our parent document to ensure nothing + // is inherited. + if (typeof HTMLTemplateElement === 'function') { + const template = document.createElement('template'); + if (template.content && template.content.ownerDocument) { + document = template.content.ownerDocument; + } + } + let trustedTypesPolicy; + let emptyHTML = ''; + const { + implementation, + createNodeIterator, + createDocumentFragment, + getElementsByTagName + } = document; + const { + importNode + } = originalDocument; + let hooks = {}; + /** + * Expose whether this browser supports running the full DOMPurify. + */ + DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined; + const { + MUSTACHE_EXPR, + ERB_EXPR, + TMPLIT_EXPR, + DATA_ATTR, + ARIA_ATTR, + IS_SCRIPT_OR_DATA, + ATTR_WHITESPACE, + CUSTOM_ELEMENT + } = EXPRESSIONS; + let { + IS_ALLOWED_URI: IS_ALLOWED_URI$1 + } = EXPRESSIONS; + /** + * We consider the elements and attributes below to be safe. Ideally + * don't add any new ones but feel free to remove unwanted ones. + */ + /* allowed element names */ + let ALLOWED_TAGS = null; + const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]); + /* Allowed attribute names */ + let ALLOWED_ATTR = null; + const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]); + /* + * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements. + * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements) + * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list) + * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`. + */ + let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, { + tagNameCheck: { + writable: true, + configurable: false, + enumerable: true, + value: null + }, + attributeNameCheck: { + writable: true, + configurable: false, + enumerable: true, + value: null + }, + allowCustomizedBuiltInElements: { + writable: true, + configurable: false, + enumerable: true, + value: false + } + })); + /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */ + let FORBID_TAGS = null; + /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */ + let FORBID_ATTR = null; + /* Decide if ARIA attributes are okay */ + let ALLOW_ARIA_ATTR = true; + /* Decide if custom data attributes are okay */ + let ALLOW_DATA_ATTR = true; + /* Decide if unknown protocols are okay */ + let ALLOW_UNKNOWN_PROTOCOLS = false; + /* Decide if self-closing tags in attributes are allowed. + * Usually removed due to a mXSS issue in jQuery 3.0 */ + let ALLOW_SELF_CLOSE_IN_ATTR = true; + /* Output should be safe for common template engines. + * This means, DOMPurify removes data attributes, mustaches and ERB + */ + let SAFE_FOR_TEMPLATES = false; + /* Output should be safe even for XML used within HTML and alike. + * This means, DOMPurify removes comments when containing risky content. + */ + let SAFE_FOR_XML = true; + /* Decide if document with ... should be returned */ + let WHOLE_DOCUMENT = false; + /* Track whether config is already set on this instance of DOMPurify. */ + let SET_CONFIG = false; + /* Decide if all elements (e.g. style, script) must be children of + * document.body. By default, browsers might move them to document.head */ + let FORCE_BODY = false; + /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html + * string (or a TrustedHTML object if Trusted Types are supported). + * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead + */ + let RETURN_DOM = false; + /* Decide if a DOM `DocumentFragment` should be returned, instead of a html + * string (or a TrustedHTML object if Trusted Types are supported) */ + let RETURN_DOM_FRAGMENT = false; + /* Try to return a Trusted Type object instead of a string, return a string in + * case Trusted Types are not supported */ + let RETURN_TRUSTED_TYPE = false; + /* Output should be free from DOM clobbering attacks? + * This sanitizes markups named with colliding, clobberable built-in DOM APIs. + */ + let SANITIZE_DOM = true; + /* Achieve full DOM Clobbering protection by isolating the namespace of named + * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules. + * + * HTML/DOM spec rules that enable DOM Clobbering: + * - Named Access on Window (§7.3.3) + * - DOM Tree Accessors (§3.1.5) + * - Form Element Parent-Child Relations (§4.10.3) + * - Iframe srcdoc / Nested WindowProxies (§4.8.5) + * - HTMLCollection (§4.2.10.2) + * + * Namespace isolation is implemented by prefixing `id` and `name` attributes + * with a constant string, i.e., `user-content-` + */ + let SANITIZE_NAMED_PROPS = false; + const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-'; + /* Keep element content when removing element? */ + let KEEP_CONTENT = true; + /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead + * of importing it into a new Document and returning a sanitized copy */ + let IN_PLACE = false; + /* Allow usage of profiles like html, svg and mathMl */ + let USE_PROFILES = {}; + /* Tags to ignore content of when KEEP_CONTENT is true */ + let FORBID_CONTENTS = null; + const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']); + /* Tags that are safe for data: URIs */ + let DATA_URI_TAGS = null; + const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']); + /* Attributes safe for values like "javascript:" */ + let URI_SAFE_ATTRIBUTES = null; + const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']); + const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML'; + const SVG_NAMESPACE = 'http://www.w3.org/2000/svg'; + const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml'; + /* Document namespace */ + let NAMESPACE = HTML_NAMESPACE; + let IS_EMPTY_INPUT = false; + /* Allowed XHTML+XML namespaces */ + let ALLOWED_NAMESPACES = null; + const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString); + let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']); + let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']); + // Certain elements are allowed in both SVG and HTML + // namespace. We need to specify them explicitly + // so that they don't get erroneously deleted from + // HTML namespace. + const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']); + /* Parsing of strict XHTML documents */ + let PARSER_MEDIA_TYPE = null; + const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html']; + const DEFAULT_PARSER_MEDIA_TYPE = 'text/html'; + let transformCaseFunc = null; + /* Keep a reference to config to pass to hooks */ + let CONFIG = null; + /* Ideally, do not touch anything below this line */ + /* ______________________________________________ */ + const formElement = document.createElement('form'); + const isRegexOrFunction = function isRegexOrFunction(testValue) { + return testValue instanceof RegExp || testValue instanceof Function; + }; + /** + * _parseConfig + * + * @param {Object} cfg optional config literal + */ + // eslint-disable-next-line complexity + const _parseConfig = function _parseConfig() { + let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + if (CONFIG && CONFIG === cfg) { + return; + } + /* Shield configuration object from tampering */ + if (!cfg || typeof cfg !== 'object') { + cfg = {}; + } + /* Shield configuration object from prototype pollution */ + cfg = clone(cfg); + PARSER_MEDIA_TYPE = + // eslint-disable-next-line unicorn/prefer-includes + SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE; + // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is. + transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase; + /* Set configuration parameters */ + ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS; + ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR; + ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES; + URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES; + DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS; + FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS; + FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {}; + FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {}; + USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false; + ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true + ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true + ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false + ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true + SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false + SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true + WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false + RETURN_DOM = cfg.RETURN_DOM || false; // Default false + RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false + RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false + FORCE_BODY = cfg.FORCE_BODY || false; // Default false + SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true + SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false + KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true + IN_PLACE = cfg.IN_PLACE || false; // Default false + IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI; + NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE; + MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS; + HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS; + CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {}; + if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) { + CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck; + } + if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) { + CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck; + } + if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') { + CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements; + } + if (SAFE_FOR_TEMPLATES) { + ALLOW_DATA_ATTR = false; + } + if (RETURN_DOM_FRAGMENT) { + RETURN_DOM = true; + } + /* Parse profile info */ + if (USE_PROFILES) { + ALLOWED_TAGS = addToSet({}, text); + ALLOWED_ATTR = []; + if (USE_PROFILES.html === true) { + addToSet(ALLOWED_TAGS, html$1); + addToSet(ALLOWED_ATTR, html); + } + if (USE_PROFILES.svg === true) { + addToSet(ALLOWED_TAGS, svg$1); + addToSet(ALLOWED_ATTR, svg); + addToSet(ALLOWED_ATTR, xml); + } + if (USE_PROFILES.svgFilters === true) { + addToSet(ALLOWED_TAGS, svgFilters); + addToSet(ALLOWED_ATTR, svg); + addToSet(ALLOWED_ATTR, xml); + } + if (USE_PROFILES.mathMl === true) { + addToSet(ALLOWED_TAGS, mathMl$1); + addToSet(ALLOWED_ATTR, mathMl); + addToSet(ALLOWED_ATTR, xml); + } + } + /* Merge configuration parameters */ + if (cfg.ADD_TAGS) { + if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) { + ALLOWED_TAGS = clone(ALLOWED_TAGS); + } + addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc); + } + if (cfg.ADD_ATTR) { + if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) { + ALLOWED_ATTR = clone(ALLOWED_ATTR); + } + addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc); + } + if (cfg.ADD_URI_SAFE_ATTR) { + addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc); + } + if (cfg.FORBID_CONTENTS) { + if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) { + FORBID_CONTENTS = clone(FORBID_CONTENTS); + } + addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc); + } + /* Add #text in case KEEP_CONTENT is set to true */ + if (KEEP_CONTENT) { + ALLOWED_TAGS['#text'] = true; + } + /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */ + if (WHOLE_DOCUMENT) { + addToSet(ALLOWED_TAGS, ['html', 'head', 'body']); + } + /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */ + if (ALLOWED_TAGS.table) { + addToSet(ALLOWED_TAGS, ['tbody']); + delete FORBID_TAGS.tbody; + } + if (cfg.TRUSTED_TYPES_POLICY) { + if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') { + throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.'); + } + if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') { + throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.'); + } + // Overwrite existing TrustedTypes policy. + trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY; + // Sign local variables required by `sanitize`. + emptyHTML = trustedTypesPolicy.createHTML(''); + } else { + // Uninitialized policy, attempt to initialize the internal dompurify policy. + if (trustedTypesPolicy === undefined) { + trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript); + } + // If creating the internal policy succeeded sign internal variables. + if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') { + emptyHTML = trustedTypesPolicy.createHTML(''); + } + } + // Prevent further manipulation of configuration. + // Not available in IE8, Safari 5, etc. + if (freeze) { + freeze(cfg); + } + CONFIG = cfg; + }; + /* Keep track of all possible SVG and MathML tags + * so that we can perform the namespace checks + * correctly. */ + const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]); + const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]); + /** + * @param {Element} element a DOM element whose namespace is being checked + * @returns {boolean} Return false if the element has a + * namespace that a spec-compliant parser would never + * return. Return true otherwise. + */ + const _checkValidNamespace = function _checkValidNamespace(element) { + let parent = getParentNode(element); + // In JSDOM, if we're inside shadow DOM, then parentNode + // can be null. We just simulate parent in this case. + if (!parent || !parent.tagName) { + parent = { + namespaceURI: NAMESPACE, + tagName: 'template' + }; + } + const tagName = stringToLowerCase(element.tagName); + const parentTagName = stringToLowerCase(parent.tagName); + if (!ALLOWED_NAMESPACES[element.namespaceURI]) { + return false; + } + if (element.namespaceURI === SVG_NAMESPACE) { + // The only way to switch from HTML namespace to SVG + // is via . If it happens via any other tag, then + // it should be killed. + if (parent.namespaceURI === HTML_NAMESPACE) { + return tagName === 'svg'; + } + // The only way to switch from MathML to SVG is via` + // svg if parent is either or MathML + // text integration points. + if (parent.namespaceURI === MATHML_NAMESPACE) { + return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]); + } + // We only allow elements that are defined in SVG + // spec. All others are disallowed in SVG namespace. + return Boolean(ALL_SVG_TAGS[tagName]); + } + if (element.namespaceURI === MATHML_NAMESPACE) { + // The only way to switch from HTML namespace to MathML + // is via . If it happens via any other tag, then + // it should be killed. + if (parent.namespaceURI === HTML_NAMESPACE) { + return tagName === 'math'; + } + // The only way to switch from SVG to MathML is via + // and HTML integration points + if (parent.namespaceURI === SVG_NAMESPACE) { + return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName]; + } + // We only allow elements that are defined in MathML + // spec. All others are disallowed in MathML namespace. + return Boolean(ALL_MATHML_TAGS[tagName]); + } + if (element.namespaceURI === HTML_NAMESPACE) { + // The only way to switch from SVG to HTML is via + // HTML integration points, and from MathML to HTML + // is via MathML text integration points + if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) { + return false; + } + if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) { + return false; + } + // We disallow tags that are specific for MathML + // or SVG and should never appear in HTML namespace + return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]); + } + // For XHTML and XML documents that support custom namespaces + if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) { + return true; + } + // The code should never reach this place (this means + // that the element somehow got namespace that is not + // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES). + // Return false just in case. + return false; + }; + /** + * _forceRemove + * + * @param {Node} node a DOM node + */ + const _forceRemove = function _forceRemove(node) { + arrayPush(DOMPurify.removed, { + element: node + }); + try { + // eslint-disable-next-line unicorn/prefer-dom-node-remove + getParentNode(node).removeChild(node); + } catch (_) { + remove(node); + } + }; + /** + * _removeAttribute + * + * @param {String} name an Attribute name + * @param {Node} node a DOM node + */ + const _removeAttribute = function _removeAttribute(name, node) { + try { + arrayPush(DOMPurify.removed, { + attribute: node.getAttributeNode(name), + from: node + }); + } catch (_) { + arrayPush(DOMPurify.removed, { + attribute: null, + from: node + }); + } + node.removeAttribute(name); + // We void attribute values for unremovable "is"" attributes + if (name === 'is' && !ALLOWED_ATTR[name]) { + if (RETURN_DOM || RETURN_DOM_FRAGMENT) { + try { + _forceRemove(node); + } catch (_) {} + } else { + try { + node.setAttribute(name, ''); + } catch (_) {} + } + } + }; + /** + * _initDocument + * + * @param {String} dirty a string of dirty markup + * @return {Document} a DOM, filled with the dirty markup + */ + const _initDocument = function _initDocument(dirty) { + /* Create a HTML document */ + let doc = null; + let leadingWhitespace = null; + if (FORCE_BODY) { + dirty = '' + dirty; + } else { + /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */ + const matches = stringMatch(dirty, /^[\r\n\t ]+/); + leadingWhitespace = matches && matches[0]; + } + if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) { + // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict) + dirty = '' + dirty + ''; + } + const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty; + /* + * Use the DOMParser API by default, fallback later if needs be + * DOMParser not work for svg when has multiple root element. + */ + if (NAMESPACE === HTML_NAMESPACE) { + try { + doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE); + } catch (_) {} + } + /* Use createHTMLDocument in case DOMParser is not available */ + if (!doc || !doc.documentElement) { + doc = implementation.createDocument(NAMESPACE, 'template', null); + try { + doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload; + } catch (_) { + // Syntax error if dirtyPayload is invalid xml + } + } + const body = doc.body || doc.documentElement; + if (dirty && leadingWhitespace) { + body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null); + } + /* Work on whole document or just its body */ + if (NAMESPACE === HTML_NAMESPACE) { + return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0]; + } + return WHOLE_DOCUMENT ? doc.documentElement : body; + }; + /** + * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document. + * + * @param {Node} root The root element or node to start traversing on. + * @return {NodeIterator} The created NodeIterator + */ + const _createNodeIterator = function _createNodeIterator(root) { + return createNodeIterator.call(root.ownerDocument || root, root, + // eslint-disable-next-line no-bitwise + NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null); + }; + /** + * _isClobbered + * + * @param {Node} elm element to check for clobbering attacks + * @return {Boolean} true if clobbered, false if safe + */ + const _isClobbered = function _isClobbered(elm) { + return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function'); + }; + /** + * Checks whether the given object is a DOM node. + * + * @param {Node} object object to check whether it's a DOM node + * @return {Boolean} true is object is a DOM node + */ + const _isNode = function _isNode(object) { + return typeof Node === 'function' && object instanceof Node; + }; + /** + * _executeHook + * Execute user configurable hooks + * + * @param entryPoint Name of the hook's entry point + * @param currentNode node to work on with the hook + * @param {Object} data additional hook parameters + */ + function _executeHook(entryPoint, currentNode, data) { + if (!hooks[entryPoint]) { + return; + } + arrayForEach(hooks[entryPoint], hook => { + hook.call(DOMPurify, currentNode, data, CONFIG); + }); + } + /** + * _sanitizeElements + * + * @protect nodeName + * @protect textContent + * @protect removeChild + * + * @param {Node} currentNode to check for permission to exist + * @return {Boolean} true if node was killed, false if left alive + */ + const _sanitizeElements = function _sanitizeElements(currentNode) { + let content = null; + /* Execute a hook if present */ + _executeHook('beforeSanitizeElements', currentNode, null); + /* Check if element is clobbered or can clobber */ + if (_isClobbered(currentNode)) { + _forceRemove(currentNode); + return true; + } + /* Now let's check the element's type and name */ + const tagName = transformCaseFunc(currentNode.nodeName); + /* Execute a hook if present */ + _executeHook('uponSanitizeElement', currentNode, { + tagName, + allowedTags: ALLOWED_TAGS + }); + /* Detect mXSS attempts abusing namespace confusion */ + if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w]/g, currentNode.innerHTML) && regExpTest(/<[/\w]/g, currentNode.textContent)) { + _forceRemove(currentNode); + return true; + } + /* Remove any occurrence of processing instructions */ + if (currentNode.nodeType === NODE_TYPE.progressingInstruction) { + _forceRemove(currentNode); + return true; + } + /* Remove any kind of possibly harmful comments */ + if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\w]/g, currentNode.data)) { + _forceRemove(currentNode); + return true; + } + /* Remove element if anything forbids its presence */ + if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) { + /* Check if we have a custom element to handle */ + if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) { + if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) { + return false; + } + if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) { + return false; + } + } + /* Keep content except for bad-listed elements */ + if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) { + const parentNode = getParentNode(currentNode) || currentNode.parentNode; + const childNodes = getChildNodes(currentNode) || currentNode.childNodes; + if (childNodes && parentNode) { + const childCount = childNodes.length; + for (let i = childCount - 1; i >= 0; --i) { + const childClone = cloneNode(childNodes[i], true); + childClone.__removalCount = (currentNode.__removalCount || 0) + 1; + parentNode.insertBefore(childClone, getNextSibling(currentNode)); + } + } + } + _forceRemove(currentNode); + return true; + } + /* Check whether element has a valid namespace */ + if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) { + _forceRemove(currentNode); + return true; + } + /* Make sure that older browsers don't get fallback-tag mXSS */ + if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) { + _forceRemove(currentNode); + return true; + } + /* Sanitize element content to be template-safe */ + if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) { + /* Get the element's text content */ + content = currentNode.textContent; + arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { + content = stringReplace(content, expr, ' '); + }); + if (currentNode.textContent !== content) { + arrayPush(DOMPurify.removed, { + element: currentNode.cloneNode() + }); + currentNode.textContent = content; + } + } + /* Execute a hook if present */ + _executeHook('afterSanitizeElements', currentNode, null); + return false; + }; + /** + * _isValidAttribute + * + * @param {string} lcTag Lowercase tag name of containing element. + * @param {string} lcName Lowercase attribute name. + * @param {string} value Attribute value. + * @return {Boolean} Returns true if `value` is valid, otherwise false. + */ + // eslint-disable-next-line complexity + const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) { + /* Make sure attribute cannot clobber */ + if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) { + return false; + } + /* Allow valid data-* attributes: At least one character after "-" + (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes) + XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804) + We don't need to check the value; it's always URI safe. */ + if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) { + if ( + // First condition does a very basic check if a) it's basically a valid custom element tagname AND + // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck + // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck + _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || + // Alternative, second condition checks if it's an `is`-attribute, AND + // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck + lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else { + return false; + } + /* Check value is safe. First, is attr inert? If so, is safe */ + } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) { + return false; + } else ; + return true; + }; + /** + * _isBasicCustomElement + * checks if at least one dash is included in tagName, and it's not the first char + * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name + * + * @param {string} tagName name of the tag of the node to sanitize + * @returns {boolean} Returns true if the tag name meets the basic criteria for a custom element, otherwise false. + */ + const _isBasicCustomElement = function _isBasicCustomElement(tagName) { + return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT); + }; + /** + * _sanitizeAttributes + * + * @protect attributes + * @protect nodeName + * @protect removeAttribute + * @protect setAttribute + * + * @param {Node} currentNode to sanitize + */ + const _sanitizeAttributes = function _sanitizeAttributes(currentNode) { + /* Execute a hook if present */ + _executeHook('beforeSanitizeAttributes', currentNode, null); + const { + attributes + } = currentNode; + /* Check if we have attributes; if not we might have a text node */ + if (!attributes) { + return; + } + const hookEvent = { + attrName: '', + attrValue: '', + keepAttr: true, + allowedAttributes: ALLOWED_ATTR, + forceKeepAttr: undefined + }; + let l = attributes.length; + /* Go backwards over all attributes; safely remove bad ones */ + while (l--) { + const attr = attributes[l]; + const { + name, + namespaceURI, + value: attrValue + } = attr; + const lcName = transformCaseFunc(name); + let value = name === 'value' ? attrValue : stringTrim(attrValue); + /* Execute a hook if present */ + hookEvent.attrName = lcName; + hookEvent.attrValue = value; + hookEvent.keepAttr = true; + hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set + _executeHook('uponSanitizeAttribute', currentNode, hookEvent); + value = hookEvent.attrValue; + /* Full DOM Clobbering protection via namespace isolation, + * Prefix id and name attributes with `user-content-` + */ + if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) { + // Remove the attribute with this value + _removeAttribute(name, currentNode); + // Prefix the value and later re-create the attribute with the sanitized value + value = SANITIZE_NAMED_PROPS_PREFIX + value; + } + /* Work around a security issue with comments inside attributes */ + if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title)/i, value)) { + _removeAttribute(name, currentNode); + continue; + } + /* Did the hooks approve of the attribute? */ + if (hookEvent.forceKeepAttr) { + continue; + } + /* Remove attribute */ + _removeAttribute(name, currentNode); + /* Did the hooks approve of the attribute? */ + if (!hookEvent.keepAttr) { + continue; + } + /* Work around a security issue in jQuery 3.0 */ + if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) { + _removeAttribute(name, currentNode); + continue; + } + /* Sanitize attribute content to be template-safe */ + if (SAFE_FOR_TEMPLATES) { + arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { + value = stringReplace(value, expr, ' '); + }); + } + /* Is `value` valid for this attribute? */ + const lcTag = transformCaseFunc(currentNode.nodeName); + if (!_isValidAttribute(lcTag, lcName, value)) { + continue; + } + /* Handle attributes that require Trusted Types */ + if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') { + if (namespaceURI) ; else { + switch (trustedTypes.getAttributeType(lcTag, lcName)) { + case 'TrustedHTML': + { + value = trustedTypesPolicy.createHTML(value); + break; + } + case 'TrustedScriptURL': + { + value = trustedTypesPolicy.createScriptURL(value); + break; + } + } + } + } + /* Handle invalid data-* attribute set by try-catching it */ + try { + if (namespaceURI) { + currentNode.setAttributeNS(namespaceURI, name, value); + } else { + /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */ + currentNode.setAttribute(name, value); + } + if (_isClobbered(currentNode)) { + _forceRemove(currentNode); + } else { + arrayPop(DOMPurify.removed); + } + } catch (_) {} + } + /* Execute a hook if present */ + _executeHook('afterSanitizeAttributes', currentNode, null); + }; + /** + * _sanitizeShadowDOM + * + * @param {DocumentFragment} fragment to iterate over recursively + */ + const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) { + let shadowNode = null; + const shadowIterator = _createNodeIterator(fragment); + /* Execute a hook if present */ + _executeHook('beforeSanitizeShadowDOM', fragment, null); + while (shadowNode = shadowIterator.nextNode()) { + /* Execute a hook if present */ + _executeHook('uponSanitizeShadowNode', shadowNode, null); + /* Sanitize tags and elements */ + if (_sanitizeElements(shadowNode)) { + continue; + } + /* Deep shadow DOM detected */ + if (shadowNode.content instanceof DocumentFragment) { + _sanitizeShadowDOM(shadowNode.content); + } + /* Check attributes, sanitize if necessary */ + _sanitizeAttributes(shadowNode); + } + /* Execute a hook if present */ + _executeHook('afterSanitizeShadowDOM', fragment, null); + }; + // eslint-disable-next-line complexity + DOMPurify.sanitize = function (dirty) { + let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let body = null; + let importedNode = null; + let currentNode = null; + let returnNode = null; + /* Make sure we have a string to sanitize. + DO NOT return early, as this will return the wrong type if + the user has requested a DOM object rather than a string */ + IS_EMPTY_INPUT = !dirty; + if (IS_EMPTY_INPUT) { + dirty = ''; + } + /* Stringify, in case dirty is an object */ + if (typeof dirty !== 'string' && !_isNode(dirty)) { + if (typeof dirty.toString === 'function') { + dirty = dirty.toString(); + if (typeof dirty !== 'string') { + throw typeErrorCreate('dirty is not a string, aborting'); + } + } else { + throw typeErrorCreate('toString is not a function'); + } + } + /* Return dirty HTML if DOMPurify cannot run */ + if (!DOMPurify.isSupported) { + return dirty; + } + /* Assign config vars */ + if (!SET_CONFIG) { + _parseConfig(cfg); + } + /* Clean up removed elements */ + DOMPurify.removed = []; + /* Check if dirty is correctly typed for IN_PLACE */ + if (typeof dirty === 'string') { + IN_PLACE = false; + } + if (IN_PLACE) { + /* Do some early pre-sanitization to avoid unsafe root nodes */ + if (dirty.nodeName) { + const tagName = transformCaseFunc(dirty.nodeName); + if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) { + throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place'); + } + } + } else if (dirty instanceof Node) { + /* If dirty is a DOM element, append to an empty document to avoid + elements being stripped by the parser */ + body = _initDocument(''); + importedNode = body.ownerDocument.importNode(dirty, true); + if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') { + /* Node is already a body, use as is */ + body = importedNode; + } else if (importedNode.nodeName === 'HTML') { + body = importedNode; + } else { + // eslint-disable-next-line unicorn/prefer-dom-node-append + body.appendChild(importedNode); + } + } else { + /* Exit directly if we have nothing to do */ + if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && + // eslint-disable-next-line unicorn/prefer-includes + dirty.indexOf('<') === -1) { + return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty; + } + /* Initialize the document to work on */ + body = _initDocument(dirty); + /* Check we have a DOM node from the data */ + if (!body) { + return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : ''; + } + } + /* Remove first element node (ours) if FORCE_BODY is set */ + if (body && FORCE_BODY) { + _forceRemove(body.firstChild); + } + /* Get node iterator */ + const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body); + /* Now start iterating over the created document */ + while (currentNode = nodeIterator.nextNode()) { + /* Sanitize tags and elements */ + if (_sanitizeElements(currentNode)) { + continue; + } + /* Shadow DOM detected, sanitize it */ + if (currentNode.content instanceof DocumentFragment) { + _sanitizeShadowDOM(currentNode.content); + } + /* Check attributes, sanitize if necessary */ + _sanitizeAttributes(currentNode); + } + /* If we sanitized `dirty` in-place, return it. */ + if (IN_PLACE) { + return dirty; + } + /* Return sanitized string or DOM */ + if (RETURN_DOM) { + if (RETURN_DOM_FRAGMENT) { + returnNode = createDocumentFragment.call(body.ownerDocument); + while (body.firstChild) { + // eslint-disable-next-line unicorn/prefer-dom-node-append + returnNode.appendChild(body.firstChild); + } + } else { + returnNode = body; + } + if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) { + /* + AdoptNode() is not used because internal state is not reset + (e.g. the past names map of a HTMLFormElement), this is safe + in theory but we would rather not risk another attack vector. + The state that is cloned by importNode() is explicitly defined + by the specs. + */ + returnNode = importNode.call(originalDocument, returnNode, true); + } + return returnNode; + } + let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML; + /* Serialize doctype if allowed */ + if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) { + serializedHTML = '\n' + serializedHTML; + } + /* Sanitize final string template-safe */ + if (SAFE_FOR_TEMPLATES) { + arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { + serializedHTML = stringReplace(serializedHTML, expr, ' '); + }); + } + return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML; + }; + DOMPurify.setConfig = function () { + let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + _parseConfig(cfg); + SET_CONFIG = true; + }; + DOMPurify.clearConfig = function () { + CONFIG = null; + SET_CONFIG = false; + }; + DOMPurify.isValidAttribute = function (tag, attr, value) { + /* Initialize shared config vars if necessary. */ + if (!CONFIG) { + _parseConfig({}); + } + const lcTag = transformCaseFunc(tag); + const lcName = transformCaseFunc(attr); + return _isValidAttribute(lcTag, lcName, value); + }; + DOMPurify.addHook = function (entryPoint, hookFunction) { + if (typeof hookFunction !== 'function') { + return; + } + hooks[entryPoint] = hooks[entryPoint] || []; + arrayPush(hooks[entryPoint], hookFunction); + }; + DOMPurify.removeHook = function (entryPoint) { + if (hooks[entryPoint]) { + return arrayPop(hooks[entryPoint]); + } + }; + DOMPurify.removeHooks = function (entryPoint) { + if (hooks[entryPoint]) { + hooks[entryPoint] = []; + } + }; + DOMPurify.removeAllHooks = function () { + hooks = {}; + }; + return DOMPurify; + } + var purify = createDOMPurify(); + + return purify; + +})); +//# sourceMappingURL=purify.js.map diff --git a/libraries/DOMPurify/dist/purify.js.map b/libraries/DOMPurify/dist/purify.js.map new file mode 100644 index 0000000..6f7a270 --- /dev/null +++ b/libraries/DOMPurify/dist/purify.js.map @@ -0,0 +1 @@ +{"version":3,"file":"purify.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/libraries/DOMPurify/dist/purify.min.js b/libraries/DOMPurify/dist/purify.min.js new file mode 100644 index 0000000..7cee476 --- /dev/null +++ b/libraries/DOMPurify/dist/purify.min.js @@ -0,0 +1,1349 @@ +/*! @license DOMPurify 3.1.7 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.7/LICENSE */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.DOMPurify = factory()); +})(this, (function () { 'use strict'; + + const { + entries, + setPrototypeOf, + isFrozen, + getPrototypeOf, + getOwnPropertyDescriptor + } = Object; + let { + freeze, + seal, + create + } = Object; // eslint-disable-line import/no-mutable-exports + let { + apply, + construct + } = typeof Reflect !== 'undefined' && Reflect; + if (!freeze) { + freeze = function freeze(x) { + return x; + }; + } + if (!seal) { + seal = function seal(x) { + return x; + }; + } + if (!apply) { + apply = function apply(fun, thisValue, args) { + return fun.apply(thisValue, args); + }; + } + if (!construct) { + construct = function construct(Func, args) { + return new Func(...args); + }; + } + const arrayForEach = unapply(Array.prototype.forEach); + const arrayPop = unapply(Array.prototype.pop); + const arrayPush = unapply(Array.prototype.push); + const stringToLowerCase = unapply(String.prototype.toLowerCase); + const stringToString = unapply(String.prototype.toString); + const stringMatch = unapply(String.prototype.match); + const stringReplace = unapply(String.prototype.replace); + const stringIndexOf = unapply(String.prototype.indexOf); + const stringTrim = unapply(String.prototype.trim); + const objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty); + const regExpTest = unapply(RegExp.prototype.test); + const typeErrorCreate = unconstruct(TypeError); + /** + * Creates a new function that calls the given function with a specified thisArg and arguments. + * + * @param func - The function to be wrapped and called. + * @returns A new function that calls the given function with a specified thisArg and arguments. + */ + function unapply(func) { + return function (thisArg) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + return apply(func, thisArg, args); + }; + } + /** + * Creates a new function that constructs an instance of the given constructor function with the provided arguments. + * + * @param func - The constructor function to be wrapped and called. + * @returns A new function that constructs an instance of the given constructor function with the provided arguments. + */ + function unconstruct(func) { + return function () { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + return construct(func, args); + }; + } + /** + * Add properties to a lookup table + * + * @param set - The set to which elements will be added. + * @param array - The array containing elements to be added to the set. + * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set. + * @returns The modified set with added elements. + */ + function addToSet(set, array) { + let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase; + if (setPrototypeOf) { + // Make 'in' and truthy checks like Boolean(set.constructor) + // independent of any properties defined on Object.prototype. + // Prevent prototype setters from intercepting set as a this value. + setPrototypeOf(set, null); + } + let l = array.length; + while (l--) { + let element = array[l]; + if (typeof element === 'string') { + const lcElement = transformCaseFunc(element); + if (lcElement !== element) { + // Config presets (e.g. tags.js, attrs.js) are immutable. + if (!isFrozen(array)) { + array[l] = lcElement; + } + element = lcElement; + } + } + set[element] = true; + } + return set; + } + /** + * Clean up an array to harden against CSPP + * + * @param array - The array to be cleaned. + * @returns The cleaned version of the array + */ + function cleanArray(array) { + for (let index = 0; index < array.length; index++) { + const isPropertyExist = objectHasOwnProperty(array, index); + if (!isPropertyExist) { + array[index] = null; + } + } + return array; + } + /** + * Shallow clone an object + * + * @param object - The object to be cloned. + * @returns A new object that copies the original. + */ + function clone(object) { + const newObject = create(null); + for (const [property, value] of entries(object)) { + const isPropertyExist = objectHasOwnProperty(object, property); + if (isPropertyExist) { + if (Array.isArray(value)) { + newObject[property] = cleanArray(value); + } else if (value && typeof value === 'object' && value.constructor === Object) { + newObject[property] = clone(value); + } else { + newObject[property] = value; + } + } + } + return newObject; + } + /** + * This method automatically checks if the prop is function or getter and behaves accordingly. + * + * @param object - The object to look up the getter function in its prototype chain. + * @param prop - The property name for which to find the getter function. + * @returns The getter function found in the prototype chain or a fallback function. + */ + function lookupGetter(object, prop) { + while (object !== null) { + const desc = getOwnPropertyDescriptor(object, prop); + if (desc) { + if (desc.get) { + return unapply(desc.get); + } + if (typeof desc.value === 'function') { + return unapply(desc.value); + } + } + object = getPrototypeOf(object); + } + function fallbackValue() { + return null; + } + return fallbackValue; + } + + const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']); + // SVG + const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']); + const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']); + // List of SVG elements that are disallowed by default. + // We still need to know them so that we can do namespace + // checks properly in case one wants to add them to + // allow-list. + const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']); + const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']); + // Similarly to SVG, we want to know all MathML elements, + // even those that we disallow by default. + const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']); + const text = freeze(['#text']); + + const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']); + const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']); + const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']); + const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']); + + // eslint-disable-next-line unicorn/better-regex + const MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode + const ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm); + const TMPLIT_EXPR = seal(/\${[\w\W]*}/gm); + const DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]/); // eslint-disable-line no-useless-escape + const ARIA_ATTR = seal(/^aria-[\-\w]+$/); // eslint-disable-line no-useless-escape + const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape + ); + const IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i); + const ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g // eslint-disable-line no-control-regex + ); + const DOCTYPE_NAME = seal(/^html$/i); + const CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i); + + var EXPRESSIONS = /*#__PURE__*/Object.freeze({ + __proto__: null, + ARIA_ATTR: ARIA_ATTR, + ATTR_WHITESPACE: ATTR_WHITESPACE, + CUSTOM_ELEMENT: CUSTOM_ELEMENT, + DATA_ATTR: DATA_ATTR, + DOCTYPE_NAME: DOCTYPE_NAME, + ERB_EXPR: ERB_EXPR, + IS_ALLOWED_URI: IS_ALLOWED_URI, + IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA, + MUSTACHE_EXPR: MUSTACHE_EXPR, + TMPLIT_EXPR: TMPLIT_EXPR + }); + + /* eslint-disable @typescript-eslint/indent */ + // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType + const NODE_TYPE = { + element: 1, + attribute: 2, + text: 3, + cdataSection: 4, + entityReference: 5, + // Deprecated + entityNode: 6, + // Deprecated + progressingInstruction: 7, + comment: 8, + document: 9, + documentType: 10, + documentFragment: 11, + notation: 12 // Deprecated + }; + const getGlobal = function getGlobal() { + return typeof window === 'undefined' ? null : window; + }; + /** + * Creates a no-op policy for internal use only. + * Don't export this function outside this module! + * @param {TrustedTypePolicyFactory} trustedTypes The policy factory. + * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix). + * @return {TrustedTypePolicy} The policy created (or null, if Trusted Types + * are not supported or creating the policy failed). + */ + const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) { + if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') { + return null; + } + // Allow the callers to control the unique policy name + // by adding a data-tt-policy-suffix to the script element with the DOMPurify. + // Policy creation with duplicate names throws in Trusted Types. + let suffix = null; + const ATTR_NAME = 'data-tt-policy-suffix'; + if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) { + suffix = purifyHostElement.getAttribute(ATTR_NAME); + } + const policyName = 'dompurify' + (suffix ? '#' + suffix : ''); + try { + return trustedTypes.createPolicy(policyName, { + createHTML(html) { + return html; + }, + createScriptURL(scriptUrl) { + return scriptUrl; + } + }); + } catch (_) { + // Policy creation failed (most likely another DOMPurify script has + // already run). Skip creating the policy, as this will only cause errors + // if TT are enforced. + console.warn('TrustedTypes policy ' + policyName + ' could not be created.'); + return null; + } + }; + function createDOMPurify() { + let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal(); + const DOMPurify = root => createDOMPurify(root); + DOMPurify.version = '3.1.7'; + DOMPurify.removed = []; + if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document) { + // Not running in a browser, provide a factory function + // so that you can pass your own Window + DOMPurify.isSupported = false; + return DOMPurify; + } + let { + document + } = window; + const originalDocument = document; + const currentScript = originalDocument.currentScript; + const { + DocumentFragment, + HTMLTemplateElement, + Node, + Element, + NodeFilter, + NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap, + HTMLFormElement, + DOMParser, + trustedTypes + } = window; + const ElementPrototype = Element.prototype; + const cloneNode = lookupGetter(ElementPrototype, 'cloneNode'); + const remove = lookupGetter(ElementPrototype, 'remove'); + const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling'); + const getChildNodes = lookupGetter(ElementPrototype, 'childNodes'); + const getParentNode = lookupGetter(ElementPrototype, 'parentNode'); + // As per issue #47, the web-components registry is inherited by a + // new document created via createHTMLDocument. As per the spec + // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries) + // a new empty registry is used when creating a template contents owner + // document, so we use that as our parent document to ensure nothing + // is inherited. + if (typeof HTMLTemplateElement === 'function') { + const template = document.createElement('template'); + if (template.content && template.content.ownerDocument) { + document = template.content.ownerDocument; + } + } + let trustedTypesPolicy; + let emptyHTML = ''; + const { + implementation, + createNodeIterator, + createDocumentFragment, + getElementsByTagName + } = document; + const { + importNode + } = originalDocument; + let hooks = {}; + /** + * Expose whether this browser supports running the full DOMPurify. + */ + DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined; + const { + MUSTACHE_EXPR, + ERB_EXPR, + TMPLIT_EXPR, + DATA_ATTR, + ARIA_ATTR, + IS_SCRIPT_OR_DATA, + ATTR_WHITESPACE, + CUSTOM_ELEMENT + } = EXPRESSIONS; + let { + IS_ALLOWED_URI: IS_ALLOWED_URI$1 + } = EXPRESSIONS; + /** + * We consider the elements and attributes below to be safe. Ideally + * don't add any new ones but feel free to remove unwanted ones. + */ + /* allowed element names */ + let ALLOWED_TAGS = null; + const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]); + /* Allowed attribute names */ + let ALLOWED_ATTR = null; + const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]); + /* + * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements. + * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements) + * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list) + * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`. + */ + let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, { + tagNameCheck: { + writable: true, + configurable: false, + enumerable: true, + value: null + }, + attributeNameCheck: { + writable: true, + configurable: false, + enumerable: true, + value: null + }, + allowCustomizedBuiltInElements: { + writable: true, + configurable: false, + enumerable: true, + value: false + } + })); + /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */ + let FORBID_TAGS = null; + /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */ + let FORBID_ATTR = null; + /* Decide if ARIA attributes are okay */ + let ALLOW_ARIA_ATTR = true; + /* Decide if custom data attributes are okay */ + let ALLOW_DATA_ATTR = true; + /* Decide if unknown protocols are okay */ + let ALLOW_UNKNOWN_PROTOCOLS = false; + /* Decide if self-closing tags in attributes are allowed. + * Usually removed due to a mXSS issue in jQuery 3.0 */ + let ALLOW_SELF_CLOSE_IN_ATTR = true; + /* Output should be safe for common template engines. + * This means, DOMPurify removes data attributes, mustaches and ERB + */ + let SAFE_FOR_TEMPLATES = false; + /* Output should be safe even for XML used within HTML and alike. + * This means, DOMPurify removes comments when containing risky content. + */ + let SAFE_FOR_XML = true; + /* Decide if document with ... should be returned */ + let WHOLE_DOCUMENT = false; + /* Track whether config is already set on this instance of DOMPurify. */ + let SET_CONFIG = false; + /* Decide if all elements (e.g. style, script) must be children of + * document.body. By default, browsers might move them to document.head */ + let FORCE_BODY = false; + /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html + * string (or a TrustedHTML object if Trusted Types are supported). + * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead + */ + let RETURN_DOM = false; + /* Decide if a DOM `DocumentFragment` should be returned, instead of a html + * string (or a TrustedHTML object if Trusted Types are supported) */ + let RETURN_DOM_FRAGMENT = false; + /* Try to return a Trusted Type object instead of a string, return a string in + * case Trusted Types are not supported */ + let RETURN_TRUSTED_TYPE = false; + /* Output should be free from DOM clobbering attacks? + * This sanitizes markups named with colliding, clobberable built-in DOM APIs. + */ + let SANITIZE_DOM = true; + /* Achieve full DOM Clobbering protection by isolating the namespace of named + * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules. + * + * HTML/DOM spec rules that enable DOM Clobbering: + * - Named Access on Window (§7.3.3) + * - DOM Tree Accessors (§3.1.5) + * - Form Element Parent-Child Relations (§4.10.3) + * - Iframe srcdoc / Nested WindowProxies (§4.8.5) + * - HTMLCollection (§4.2.10.2) + * + * Namespace isolation is implemented by prefixing `id` and `name` attributes + * with a constant string, i.e., `user-content-` + */ + let SANITIZE_NAMED_PROPS = false; + const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-'; + /* Keep element content when removing element? */ + let KEEP_CONTENT = true; + /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead + * of importing it into a new Document and returning a sanitized copy */ + let IN_PLACE = false; + /* Allow usage of profiles like html, svg and mathMl */ + let USE_PROFILES = {}; + /* Tags to ignore content of when KEEP_CONTENT is true */ + let FORBID_CONTENTS = null; + const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']); + /* Tags that are safe for data: URIs */ + let DATA_URI_TAGS = null; + const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']); + /* Attributes safe for values like "javascript:" */ + let URI_SAFE_ATTRIBUTES = null; + const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']); + const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML'; + const SVG_NAMESPACE = 'http://www.w3.org/2000/svg'; + const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml'; + /* Document namespace */ + let NAMESPACE = HTML_NAMESPACE; + let IS_EMPTY_INPUT = false; + /* Allowed XHTML+XML namespaces */ + let ALLOWED_NAMESPACES = null; + const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString); + let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']); + let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']); + // Certain elements are allowed in both SVG and HTML + // namespace. We need to specify them explicitly + // so that they don't get erroneously deleted from + // HTML namespace. + const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']); + /* Parsing of strict XHTML documents */ + let PARSER_MEDIA_TYPE = null; + const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html']; + const DEFAULT_PARSER_MEDIA_TYPE = 'text/html'; + let transformCaseFunc = null; + /* Keep a reference to config to pass to hooks */ + let CONFIG = null; + /* Ideally, do not touch anything below this line */ + /* ______________________________________________ */ + const formElement = document.createElement('form'); + const isRegexOrFunction = function isRegexOrFunction(testValue) { + return testValue instanceof RegExp || testValue instanceof Function; + }; + /** + * _parseConfig + * + * @param {Object} cfg optional config literal + */ + // eslint-disable-next-line complexity + const _parseConfig = function _parseConfig() { + let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + if (CONFIG && CONFIG === cfg) { + return; + } + /* Shield configuration object from tampering */ + if (!cfg || typeof cfg !== 'object') { + cfg = {}; + } + /* Shield configuration object from prototype pollution */ + cfg = clone(cfg); + PARSER_MEDIA_TYPE = + // eslint-disable-next-line unicorn/prefer-includes + SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE; + // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is. + transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase; + /* Set configuration parameters */ + ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS; + ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR; + ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES; + URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES; + DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS; + FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS; + FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {}; + FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {}; + USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false; + ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true + ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true + ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false + ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true + SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false + SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true + WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false + RETURN_DOM = cfg.RETURN_DOM || false; // Default false + RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false + RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false + FORCE_BODY = cfg.FORCE_BODY || false; // Default false + SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true + SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false + KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true + IN_PLACE = cfg.IN_PLACE || false; // Default false + IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI; + NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE; + MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS; + HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS; + CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {}; + if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) { + CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck; + } + if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) { + CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck; + } + if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') { + CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements; + } + if (SAFE_FOR_TEMPLATES) { + ALLOW_DATA_ATTR = false; + } + if (RETURN_DOM_FRAGMENT) { + RETURN_DOM = true; + } + /* Parse profile info */ + if (USE_PROFILES) { + ALLOWED_TAGS = addToSet({}, text); + ALLOWED_ATTR = []; + if (USE_PROFILES.html === true) { + addToSet(ALLOWED_TAGS, html$1); + addToSet(ALLOWED_ATTR, html); + } + if (USE_PROFILES.svg === true) { + addToSet(ALLOWED_TAGS, svg$1); + addToSet(ALLOWED_ATTR, svg); + addToSet(ALLOWED_ATTR, xml); + } + if (USE_PROFILES.svgFilters === true) { + addToSet(ALLOWED_TAGS, svgFilters); + addToSet(ALLOWED_ATTR, svg); + addToSet(ALLOWED_ATTR, xml); + } + if (USE_PROFILES.mathMl === true) { + addToSet(ALLOWED_TAGS, mathMl$1); + addToSet(ALLOWED_ATTR, mathMl); + addToSet(ALLOWED_ATTR, xml); + } + } + /* Merge configuration parameters */ + if (cfg.ADD_TAGS) { + if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) { + ALLOWED_TAGS = clone(ALLOWED_TAGS); + } + addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc); + } + if (cfg.ADD_ATTR) { + if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) { + ALLOWED_ATTR = clone(ALLOWED_ATTR); + } + addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc); + } + if (cfg.ADD_URI_SAFE_ATTR) { + addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc); + } + if (cfg.FORBID_CONTENTS) { + if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) { + FORBID_CONTENTS = clone(FORBID_CONTENTS); + } + addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc); + } + /* Add #text in case KEEP_CONTENT is set to true */ + if (KEEP_CONTENT) { + ALLOWED_TAGS['#text'] = true; + } + /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */ + if (WHOLE_DOCUMENT) { + addToSet(ALLOWED_TAGS, ['html', 'head', 'body']); + } + /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */ + if (ALLOWED_TAGS.table) { + addToSet(ALLOWED_TAGS, ['tbody']); + delete FORBID_TAGS.tbody; + } + if (cfg.TRUSTED_TYPES_POLICY) { + if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') { + throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.'); + } + if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') { + throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.'); + } + // Overwrite existing TrustedTypes policy. + trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY; + // Sign local variables required by `sanitize`. + emptyHTML = trustedTypesPolicy.createHTML(''); + } else { + // Uninitialized policy, attempt to initialize the internal dompurify policy. + if (trustedTypesPolicy === undefined) { + trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript); + } + // If creating the internal policy succeeded sign internal variables. + if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') { + emptyHTML = trustedTypesPolicy.createHTML(''); + } + } + // Prevent further manipulation of configuration. + // Not available in IE8, Safari 5, etc. + if (freeze) { + freeze(cfg); + } + CONFIG = cfg; + }; + /* Keep track of all possible SVG and MathML tags + * so that we can perform the namespace checks + * correctly. */ + const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]); + const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]); + /** + * @param {Element} element a DOM element whose namespace is being checked + * @returns {boolean} Return false if the element has a + * namespace that a spec-compliant parser would never + * return. Return true otherwise. + */ + const _checkValidNamespace = function _checkValidNamespace(element) { + let parent = getParentNode(element); + // In JSDOM, if we're inside shadow DOM, then parentNode + // can be null. We just simulate parent in this case. + if (!parent || !parent.tagName) { + parent = { + namespaceURI: NAMESPACE, + tagName: 'template' + }; + } + const tagName = stringToLowerCase(element.tagName); + const parentTagName = stringToLowerCase(parent.tagName); + if (!ALLOWED_NAMESPACES[element.namespaceURI]) { + return false; + } + if (element.namespaceURI === SVG_NAMESPACE) { + // The only way to switch from HTML namespace to SVG + // is via . If it happens via any other tag, then + // it should be killed. + if (parent.namespaceURI === HTML_NAMESPACE) { + return tagName === 'svg'; + } + // The only way to switch from MathML to SVG is via` + // svg if parent is either or MathML + // text integration points. + if (parent.namespaceURI === MATHML_NAMESPACE) { + return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]); + } + // We only allow elements that are defined in SVG + // spec. All others are disallowed in SVG namespace. + return Boolean(ALL_SVG_TAGS[tagName]); + } + if (element.namespaceURI === MATHML_NAMESPACE) { + // The only way to switch from HTML namespace to MathML + // is via . If it happens via any other tag, then + // it should be killed. + if (parent.namespaceURI === HTML_NAMESPACE) { + return tagName === 'math'; + } + // The only way to switch from SVG to MathML is via + // and HTML integration points + if (parent.namespaceURI === SVG_NAMESPACE) { + return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName]; + } + // We only allow elements that are defined in MathML + // spec. All others are disallowed in MathML namespace. + return Boolean(ALL_MATHML_TAGS[tagName]); + } + if (element.namespaceURI === HTML_NAMESPACE) { + // The only way to switch from SVG to HTML is via + // HTML integration points, and from MathML to HTML + // is via MathML text integration points + if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) { + return false; + } + if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) { + return false; + } + // We disallow tags that are specific for MathML + // or SVG and should never appear in HTML namespace + return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]); + } + // For XHTML and XML documents that support custom namespaces + if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) { + return true; + } + // The code should never reach this place (this means + // that the element somehow got namespace that is not + // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES). + // Return false just in case. + return false; + }; + /** + * _forceRemove + * + * @param {Node} node a DOM node + */ + const _forceRemove = function _forceRemove(node) { + arrayPush(DOMPurify.removed, { + element: node + }); + try { + // eslint-disable-next-line unicorn/prefer-dom-node-remove + getParentNode(node).removeChild(node); + } catch (_) { + remove(node); + } + }; + /** + * _removeAttribute + * + * @param {String} name an Attribute name + * @param {Node} node a DOM node + */ + const _removeAttribute = function _removeAttribute(name, node) { + try { + arrayPush(DOMPurify.removed, { + attribute: node.getAttributeNode(name), + from: node + }); + } catch (_) { + arrayPush(DOMPurify.removed, { + attribute: null, + from: node + }); + } + node.removeAttribute(name); + // We void attribute values for unremovable "is"" attributes + if (name === 'is' && !ALLOWED_ATTR[name]) { + if (RETURN_DOM || RETURN_DOM_FRAGMENT) { + try { + _forceRemove(node); + } catch (_) {} + } else { + try { + node.setAttribute(name, ''); + } catch (_) {} + } + } + }; + /** + * _initDocument + * + * @param {String} dirty a string of dirty markup + * @return {Document} a DOM, filled with the dirty markup + */ + const _initDocument = function _initDocument(dirty) { + /* Create a HTML document */ + let doc = null; + let leadingWhitespace = null; + if (FORCE_BODY) { + dirty = '' + dirty; + } else { + /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */ + const matches = stringMatch(dirty, /^[\r\n\t ]+/); + leadingWhitespace = matches && matches[0]; + } + if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) { + // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict) + dirty = '' + dirty + ''; + } + const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty; + /* + * Use the DOMParser API by default, fallback later if needs be + * DOMParser not work for svg when has multiple root element. + */ + if (NAMESPACE === HTML_NAMESPACE) { + try { + doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE); + } catch (_) {} + } + /* Use createHTMLDocument in case DOMParser is not available */ + if (!doc || !doc.documentElement) { + doc = implementation.createDocument(NAMESPACE, 'template', null); + try { + doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload; + } catch (_) { + // Syntax error if dirtyPayload is invalid xml + } + } + const body = doc.body || doc.documentElement; + if (dirty && leadingWhitespace) { + body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null); + } + /* Work on whole document or just its body */ + if (NAMESPACE === HTML_NAMESPACE) { + return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0]; + } + return WHOLE_DOCUMENT ? doc.documentElement : body; + }; + /** + * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document. + * + * @param {Node} root The root element or node to start traversing on. + * @return {NodeIterator} The created NodeIterator + */ + const _createNodeIterator = function _createNodeIterator(root) { + return createNodeIterator.call(root.ownerDocument || root, root, + // eslint-disable-next-line no-bitwise + NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null); + }; + /** + * _isClobbered + * + * @param {Node} elm element to check for clobbering attacks + * @return {Boolean} true if clobbered, false if safe + */ + const _isClobbered = function _isClobbered(elm) { + return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function'); + }; + /** + * Checks whether the given object is a DOM node. + * + * @param {Node} object object to check whether it's a DOM node + * @return {Boolean} true is object is a DOM node + */ + const _isNode = function _isNode(object) { + return typeof Node === 'function' && object instanceof Node; + }; + /** + * _executeHook + * Execute user configurable hooks + * + * @param entryPoint Name of the hook's entry point + * @param currentNode node to work on with the hook + * @param {Object} data additional hook parameters + */ + function _executeHook(entryPoint, currentNode, data) { + if (!hooks[entryPoint]) { + return; + } + arrayForEach(hooks[entryPoint], hook => { + hook.call(DOMPurify, currentNode, data, CONFIG); + }); + } + /** + * _sanitizeElements + * + * @protect nodeName + * @protect textContent + * @protect removeChild + * + * @param {Node} currentNode to check for permission to exist + * @return {Boolean} true if node was killed, false if left alive + */ + const _sanitizeElements = function _sanitizeElements(currentNode) { + let content = null; + /* Execute a hook if present */ + _executeHook('beforeSanitizeElements', currentNode, null); + /* Check if element is clobbered or can clobber */ + if (_isClobbered(currentNode)) { + _forceRemove(currentNode); + return true; + } + /* Now let's check the element's type and name */ + const tagName = transformCaseFunc(currentNode.nodeName); + /* Execute a hook if present */ + _executeHook('uponSanitizeElement', currentNode, { + tagName, + allowedTags: ALLOWED_TAGS + }); + /* Detect mXSS attempts abusing namespace confusion */ + if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w]/g, currentNode.innerHTML) && regExpTest(/<[/\w]/g, currentNode.textContent)) { + _forceRemove(currentNode); + return true; + } + /* Remove any occurrence of processing instructions */ + if (currentNode.nodeType === NODE_TYPE.progressingInstruction) { + _forceRemove(currentNode); + return true; + } + /* Remove any kind of possibly harmful comments */ + if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\w]/g, currentNode.data)) { + _forceRemove(currentNode); + return true; + } + /* Remove element if anything forbids its presence */ + if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) { + /* Check if we have a custom element to handle */ + if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) { + if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) { + return false; + } + if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) { + return false; + } + } + /* Keep content except for bad-listed elements */ + if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) { + const parentNode = getParentNode(currentNode) || currentNode.parentNode; + const childNodes = getChildNodes(currentNode) || currentNode.childNodes; + if (childNodes && parentNode) { + const childCount = childNodes.length; + for (let i = childCount - 1; i >= 0; --i) { + const childClone = cloneNode(childNodes[i], true); + childClone.__removalCount = (currentNode.__removalCount || 0) + 1; + parentNode.insertBefore(childClone, getNextSibling(currentNode)); + } + } + } + _forceRemove(currentNode); + return true; + } + /* Check whether element has a valid namespace */ + if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) { + _forceRemove(currentNode); + return true; + } + /* Make sure that older browsers don't get fallback-tag mXSS */ + if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) { + _forceRemove(currentNode); + return true; + } + /* Sanitize element content to be template-safe */ + if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) { + /* Get the element's text content */ + content = currentNode.textContent; + arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { + content = stringReplace(content, expr, ' '); + }); + if (currentNode.textContent !== content) { + arrayPush(DOMPurify.removed, { + element: currentNode.cloneNode() + }); + currentNode.textContent = content; + } + } + /* Execute a hook if present */ + _executeHook('afterSanitizeElements', currentNode, null); + return false; + }; + /** + * _isValidAttribute + * + * @param {string} lcTag Lowercase tag name of containing element. + * @param {string} lcName Lowercase attribute name. + * @param {string} value Attribute value. + * @return {Boolean} Returns true if `value` is valid, otherwise false. + */ + // eslint-disable-next-line complexity + const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) { + /* Make sure attribute cannot clobber */ + if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) { + return false; + } + /* Allow valid data-* attributes: At least one character after "-" + (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes) + XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804) + We don't need to check the value; it's always URI safe. */ + if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) { + if ( + // First condition does a very basic check if a) it's basically a valid custom element tagname AND + // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck + // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck + _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || + // Alternative, second condition checks if it's an `is`-attribute, AND + // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck + lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else { + return false; + } + /* Check value is safe. First, is attr inert? If so, is safe */ + } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) { + return false; + } else ; + return true; + }; + /** + * _isBasicCustomElement + * checks if at least one dash is included in tagName, and it's not the first char + * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name + * + * @param {string} tagName name of the tag of the node to sanitize + * @returns {boolean} Returns true if the tag name meets the basic criteria for a custom element, otherwise false. + */ + const _isBasicCustomElement = function _isBasicCustomElement(tagName) { + return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT); + }; + /** + * _sanitizeAttributes + * + * @protect attributes + * @protect nodeName + * @protect removeAttribute + * @protect setAttribute + * + * @param {Node} currentNode to sanitize + */ + const _sanitizeAttributes = function _sanitizeAttributes(currentNode) { + /* Execute a hook if present */ + _executeHook('beforeSanitizeAttributes', currentNode, null); + const { + attributes + } = currentNode; + /* Check if we have attributes; if not we might have a text node */ + if (!attributes) { + return; + } + const hookEvent = { + attrName: '', + attrValue: '', + keepAttr: true, + allowedAttributes: ALLOWED_ATTR, + forceKeepAttr: undefined + }; + let l = attributes.length; + /* Go backwards over all attributes; safely remove bad ones */ + while (l--) { + const attr = attributes[l]; + const { + name, + namespaceURI, + value: attrValue + } = attr; + const lcName = transformCaseFunc(name); + let value = name === 'value' ? attrValue : stringTrim(attrValue); + /* Execute a hook if present */ + hookEvent.attrName = lcName; + hookEvent.attrValue = value; + hookEvent.keepAttr = true; + hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set + _executeHook('uponSanitizeAttribute', currentNode, hookEvent); + value = hookEvent.attrValue; + /* Full DOM Clobbering protection via namespace isolation, + * Prefix id and name attributes with `user-content-` + */ + if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) { + // Remove the attribute with this value + _removeAttribute(name, currentNode); + // Prefix the value and later re-create the attribute with the sanitized value + value = SANITIZE_NAMED_PROPS_PREFIX + value; + } + /* Work around a security issue with comments inside attributes */ + if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title)/i, value)) { + _removeAttribute(name, currentNode); + continue; + } + /* Did the hooks approve of the attribute? */ + if (hookEvent.forceKeepAttr) { + continue; + } + /* Remove attribute */ + _removeAttribute(name, currentNode); + /* Did the hooks approve of the attribute? */ + if (!hookEvent.keepAttr) { + continue; + } + /* Work around a security issue in jQuery 3.0 */ + if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) { + _removeAttribute(name, currentNode); + continue; + } + /* Sanitize attribute content to be template-safe */ + if (SAFE_FOR_TEMPLATES) { + arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { + value = stringReplace(value, expr, ' '); + }); + } + /* Is `value` valid for this attribute? */ + const lcTag = transformCaseFunc(currentNode.nodeName); + if (!_isValidAttribute(lcTag, lcName, value)) { + continue; + } + /* Handle attributes that require Trusted Types */ + if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') { + if (namespaceURI) ; else { + switch (trustedTypes.getAttributeType(lcTag, lcName)) { + case 'TrustedHTML': + { + value = trustedTypesPolicy.createHTML(value); + break; + } + case 'TrustedScriptURL': + { + value = trustedTypesPolicy.createScriptURL(value); + break; + } + } + } + } + /* Handle invalid data-* attribute set by try-catching it */ + try { + if (namespaceURI) { + currentNode.setAttributeNS(namespaceURI, name, value); + } else { + /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */ + currentNode.setAttribute(name, value); + } + if (_isClobbered(currentNode)) { + _forceRemove(currentNode); + } else { + arrayPop(DOMPurify.removed); + } + } catch (_) {} + } + /* Execute a hook if present */ + _executeHook('afterSanitizeAttributes', currentNode, null); + }; + /** + * _sanitizeShadowDOM + * + * @param {DocumentFragment} fragment to iterate over recursively + */ + const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) { + let shadowNode = null; + const shadowIterator = _createNodeIterator(fragment); + /* Execute a hook if present */ + _executeHook('beforeSanitizeShadowDOM', fragment, null); + while (shadowNode = shadowIterator.nextNode()) { + /* Execute a hook if present */ + _executeHook('uponSanitizeShadowNode', shadowNode, null); + /* Sanitize tags and elements */ + if (_sanitizeElements(shadowNode)) { + continue; + } + /* Deep shadow DOM detected */ + if (shadowNode.content instanceof DocumentFragment) { + _sanitizeShadowDOM(shadowNode.content); + } + /* Check attributes, sanitize if necessary */ + _sanitizeAttributes(shadowNode); + } + /* Execute a hook if present */ + _executeHook('afterSanitizeShadowDOM', fragment, null); + }; + // eslint-disable-next-line complexity + DOMPurify.sanitize = function (dirty) { + let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let body = null; + let importedNode = null; + let currentNode = null; + let returnNode = null; + /* Make sure we have a string to sanitize. + DO NOT return early, as this will return the wrong type if + the user has requested a DOM object rather than a string */ + IS_EMPTY_INPUT = !dirty; + if (IS_EMPTY_INPUT) { + dirty = ''; + } + /* Stringify, in case dirty is an object */ + if (typeof dirty !== 'string' && !_isNode(dirty)) { + if (typeof dirty.toString === 'function') { + dirty = dirty.toString(); + if (typeof dirty !== 'string') { + throw typeErrorCreate('dirty is not a string, aborting'); + } + } else { + throw typeErrorCreate('toString is not a function'); + } + } + /* Return dirty HTML if DOMPurify cannot run */ + if (!DOMPurify.isSupported) { + return dirty; + } + /* Assign config vars */ + if (!SET_CONFIG) { + _parseConfig(cfg); + } + /* Clean up removed elements */ + DOMPurify.removed = []; + /* Check if dirty is correctly typed for IN_PLACE */ + if (typeof dirty === 'string') { + IN_PLACE = false; + } + if (IN_PLACE) { + /* Do some early pre-sanitization to avoid unsafe root nodes */ + if (dirty.nodeName) { + const tagName = transformCaseFunc(dirty.nodeName); + if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) { + throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place'); + } + } + } else if (dirty instanceof Node) { + /* If dirty is a DOM element, append to an empty document to avoid + elements being stripped by the parser */ + body = _initDocument(''); + importedNode = body.ownerDocument.importNode(dirty, true); + if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') { + /* Node is already a body, use as is */ + body = importedNode; + } else if (importedNode.nodeName === 'HTML') { + body = importedNode; + } else { + // eslint-disable-next-line unicorn/prefer-dom-node-append + body.appendChild(importedNode); + } + } else { + /* Exit directly if we have nothing to do */ + if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && + // eslint-disable-next-line unicorn/prefer-includes + dirty.indexOf('<') === -1) { + return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty; + } + /* Initialize the document to work on */ + body = _initDocument(dirty); + /* Check we have a DOM node from the data */ + if (!body) { + return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : ''; + } + } + /* Remove first element node (ours) if FORCE_BODY is set */ + if (body && FORCE_BODY) { + _forceRemove(body.firstChild); + } + /* Get node iterator */ + const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body); + /* Now start iterating over the created document */ + while (currentNode = nodeIterator.nextNode()) { + /* Sanitize tags and elements */ + if (_sanitizeElements(currentNode)) { + continue; + } + /* Shadow DOM detected, sanitize it */ + if (currentNode.content instanceof DocumentFragment) { + _sanitizeShadowDOM(currentNode.content); + } + /* Check attributes, sanitize if necessary */ + _sanitizeAttributes(currentNode); + } + /* If we sanitized `dirty` in-place, return it. */ + if (IN_PLACE) { + return dirty; + } + /* Return sanitized string or DOM */ + if (RETURN_DOM) { + if (RETURN_DOM_FRAGMENT) { + returnNode = createDocumentFragment.call(body.ownerDocument); + while (body.firstChild) { + // eslint-disable-next-line unicorn/prefer-dom-node-append + returnNode.appendChild(body.firstChild); + } + } else { + returnNode = body; + } + if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) { + /* + AdoptNode() is not used because internal state is not reset + (e.g. the past names map of a HTMLFormElement), this is safe + in theory but we would rather not risk another attack vector. + The state that is cloned by importNode() is explicitly defined + by the specs. + */ + returnNode = importNode.call(originalDocument, returnNode, true); + } + return returnNode; + } + let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML; + /* Serialize doctype if allowed */ + if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) { + serializedHTML = '\n' + serializedHTML; + } + /* Sanitize final string template-safe */ + if (SAFE_FOR_TEMPLATES) { + arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { + serializedHTML = stringReplace(serializedHTML, expr, ' '); + }); + } + return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML; + }; + DOMPurify.setConfig = function () { + let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + _parseConfig(cfg); + SET_CONFIG = true; + }; + DOMPurify.clearConfig = function () { + CONFIG = null; + SET_CONFIG = false; + }; + DOMPurify.isValidAttribute = function (tag, attr, value) { + /* Initialize shared config vars if necessary. */ + if (!CONFIG) { + _parseConfig({}); + } + const lcTag = transformCaseFunc(tag); + const lcName = transformCaseFunc(attr); + return _isValidAttribute(lcTag, lcName, value); + }; + DOMPurify.addHook = function (entryPoint, hookFunction) { + if (typeof hookFunction !== 'function') { + return; + } + hooks[entryPoint] = hooks[entryPoint] || []; + arrayPush(hooks[entryPoint], hookFunction); + }; + DOMPurify.removeHook = function (entryPoint) { + if (hooks[entryPoint]) { + return arrayPop(hooks[entryPoint]); + } + }; + DOMPurify.removeHooks = function (entryPoint) { + if (hooks[entryPoint]) { + hooks[entryPoint] = []; + } + }; + DOMPurify.removeAllHooks = function () { + hooks = {}; + }; + return DOMPurify; + } + var purify = createDOMPurify(); + + return purify; + +})); +//# sourceMappingURL=purify.min.js.map diff --git a/libraries/DOMPurify/dist/purify.min.js.map b/libraries/DOMPurify/dist/purify.min.js.map new file mode 100644 index 0000000..7b10cb3 --- /dev/null +++ b/libraries/DOMPurify/dist/purify.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"purify.min.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/libraries/colorbox/LICENSE.md b/libraries/colorbox/LICENSE.md new file mode 100644 index 0000000..ce667a1 --- /dev/null +++ b/libraries/colorbox/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Jack Moore + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/libraries/colorbox/README.md b/libraries/colorbox/README.md new file mode 100644 index 0000000..ae91e29 --- /dev/null +++ b/libraries/colorbox/README.md @@ -0,0 +1,620 @@ +## About Colorbox: +A customizable lightbox plugin for jQuery. See the [project page](http://jacklmoore.com/colorbox/) for documentation and a demonstration, and the [FAQ](http://jacklmoore.com/colorbox/faq/) for solutions and examples to common issues. Released under the [MIT license](http://www.opensource.org/licenses/mit-license.php). + +## Changelog: + +##### Version 1.6.4 - 2016/05/10 + +* Fixed bug where using the inline property would duplicate target elements, if the selector matched multiple elements. + +##### Version 1.6.3 - 2015/07/27 + +* Fixed regression that caused error in IE8 when the calculated initial size was negative. Fixes #741 + +##### Version 1.6.2 - 2015/07/13 + +* Fixed iframe attribute name (allowFullScreen to allowFullscreen). Fixes #737 + +##### Version 1.6.1 - 2015/05/14 + +* Replaced the inline onclick handler for cboxPhoto with a namespaced event for easier unbinding. Fixes #719. + +##### Version 1.6.0 - 2015/03/03 + +* Added two new properties that expose how `` and `' ); + html.attr( 'height', height ); + html.attr( 'width', width ); + if (video.type === 'youtube') { + html.attr( 'src', '//www.youtube.com/embed/' + video.id + '?autoplay=1&rel=0&v=' + video.id ); + } else if (video.type === 'vimeo') { + html.attr( 'src', '//player.vimeo.com/video/' + video.id + '?autoplay=1' ); + } else if (video.type === 'vzaar') { + html.attr( 'src', '//view.vzaar.com/' + video.id + '/player?autoplay=true' ); + } + + iframe = $(html).wrap( '
' ).insertAfter(item.find('.owl-video')); + + this._playing = item.addClass('owl-video-playing'); + }; + + /** + * Checks whether an video is currently in full screen mode or not. + * @todo Bad style because looks like a readonly method but changes members. + * @protected + * @returns {Boolean} + */ + Video.prototype.isInFullScreen = function() { + var element = document.fullscreenElement || document.mozFullScreenElement || + document.webkitFullscreenElement; + + return element && $(element).parent().hasClass('owl-video-frame'); + }; + + /** + * Destroys the plugin. + */ + Video.prototype.destroy = function() { + var handler, property; + + this._core.$element.off('click.owl.video'); + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.Video = Video; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Animate Plugin + * @version 2.3.4 + * @author Bartosz Wojciechowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the animate plugin. + * @class The Navigation Plugin + * @param {Owl} scope - The Owl Carousel + */ + var Animate = function(scope) { + this.core = scope; + this.core.options = $.extend({}, Animate.Defaults, this.core.options); + this.swapping = true; + this.previous = undefined; + this.next = undefined; + + this.handlers = { + 'change.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name == 'position') { + this.previous = this.core.current(); + this.next = e.property.value; + } + }, this), + 'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) { + if (e.namespace) { + this.swapping = e.type == 'translated'; + } + }, this), + 'translate.owl.carousel': $.proxy(function(e) { + if (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) { + this.swap(); + } + }, this) + }; + + this.core.$element.on(this.handlers); + }; + + /** + * Default options. + * @public + */ + Animate.Defaults = { + animateOut: false, + animateIn: false + }; + + /** + * Toggles the animation classes whenever an translations starts. + * @protected + * @returns {Boolean|undefined} + */ + Animate.prototype.swap = function() { + + if (this.core.settings.items !== 1) { + return; + } + + if (!$.support.animation || !$.support.transition) { + return; + } + + this.core.speed(0); + + var left, + clear = $.proxy(this.clear, this), + previous = this.core.$stage.children().eq(this.previous), + next = this.core.$stage.children().eq(this.next), + incoming = this.core.settings.animateIn, + outgoing = this.core.settings.animateOut; + + if (this.core.current() === this.previous) { + return; + } + + if (outgoing) { + left = this.core.coordinates(this.previous) - this.core.coordinates(this.next); + previous.one($.support.animation.end, clear) + .css( { 'left': left + 'px' } ) + .addClass('animated owl-animated-out') + .addClass(outgoing); + } + + if (incoming) { + next.one($.support.animation.end, clear) + .addClass('animated owl-animated-in') + .addClass(incoming); + } + }; + + Animate.prototype.clear = function(e) { + $(e.target).css( { 'left': '' } ) + .removeClass('animated owl-animated-out owl-animated-in') + .removeClass(this.core.settings.animateIn) + .removeClass(this.core.settings.animateOut); + this.core.onTransitionEnd(); + }; + + /** + * Destroys the plugin. + * @public + */ + Animate.prototype.destroy = function() { + var handler, property; + + for (handler in this.handlers) { + this.core.$element.off(handler, this.handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.Animate = Animate; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Autoplay Plugin + * @version 2.3.4 + * @author Bartosz Wojciechowski + * @author Artus Kolanowski + * @author David Deutsch + * @author Tom De Caluwé + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the autoplay plugin. + * @class The Autoplay Plugin + * @param {Owl} scope - The Owl Carousel + */ + var Autoplay = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * The autoplay timeout id. + * @type {Number} + */ + this._call = null; + + /** + * Depending on the state of the plugin, this variable contains either + * the start time of the timer or the current timer value if it's + * paused. Since we start in a paused state we initialize the timer + * value. + * @type {Number} + */ + this._time = 0; + + /** + * Stores the timeout currently used. + * @type {Number} + */ + this._timeout = 0; + + /** + * Indicates whenever the autoplay is paused. + * @type {Boolean} + */ + this._paused = true; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name === 'settings') { + if (this._core.settings.autoplay) { + this.play(); + } else { + this.stop(); + } + } else if (e.namespace && e.property.name === 'position' && this._paused) { + // Reset the timer. This code is triggered when the position + // of the carousel was changed through user interaction. + this._time = 0; + } + }, this), + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.autoplay) { + this.play(); + } + }, this), + 'play.owl.autoplay': $.proxy(function(e, t, s) { + if (e.namespace) { + this.play(t, s); + } + }, this), + 'stop.owl.autoplay': $.proxy(function(e) { + if (e.namespace) { + this.stop(); + } + }, this), + 'mouseover.owl.autoplay': $.proxy(function() { + if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { + this.pause(); + } + }, this), + 'mouseleave.owl.autoplay': $.proxy(function() { + if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { + this.play(); + } + }, this), + 'touchstart.owl.core': $.proxy(function() { + if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { + this.pause(); + } + }, this), + 'touchend.owl.core': $.proxy(function() { + if (this._core.settings.autoplayHoverPause) { + this.play(); + } + }, this) + }; + + // register event handlers + this._core.$element.on(this._handlers); + + // set default options + this._core.options = $.extend({}, Autoplay.Defaults, this._core.options); + }; + + /** + * Default options. + * @public + */ + Autoplay.Defaults = { + autoplay: false, + autoplayTimeout: 5000, + autoplayHoverPause: false, + autoplaySpeed: false + }; + + /** + * Transition to the next slide and set a timeout for the next transition. + * @private + * @param {Number} [speed] - The animation speed for the animations. + */ + Autoplay.prototype._next = function(speed) { + this._call = window.setTimeout( + $.proxy(this._next, this, speed), + this._timeout * (Math.round(this.read() / this._timeout) + 1) - this.read() + ); + + if (this._core.is('interacting') || document.hidden) { + return; + } + this._core.next(speed || this._core.settings.autoplaySpeed); + } + + /** + * Reads the current timer value when the timer is playing. + * @public + */ + Autoplay.prototype.read = function() { + return new Date().getTime() - this._time; + }; + + /** + * Starts the autoplay. + * @public + * @param {Number} [timeout] - The interval before the next animation starts. + * @param {Number} [speed] - The animation speed for the animations. + */ + Autoplay.prototype.play = function(timeout, speed) { + var elapsed; + + if (!this._core.is('rotating')) { + this._core.enter('rotating'); + } + + timeout = timeout || this._core.settings.autoplayTimeout; + + // Calculate the elapsed time since the last transition. If the carousel + // wasn't playing this calculation will yield zero. + elapsed = Math.min(this._time % (this._timeout || timeout), timeout); + + if (this._paused) { + // Start the clock. + this._time = this.read(); + this._paused = false; + } else { + // Clear the active timeout to allow replacement. + window.clearTimeout(this._call); + } + + // Adjust the origin of the timer to match the new timeout value. + this._time += this.read() % timeout - elapsed; + + this._timeout = timeout; + this._call = window.setTimeout($.proxy(this._next, this, speed), timeout - elapsed); + }; + + /** + * Stops the autoplay. + * @public + */ + Autoplay.prototype.stop = function() { + if (this._core.is('rotating')) { + // Reset the clock. + this._time = 0; + this._paused = true; + + window.clearTimeout(this._call); + this._core.leave('rotating'); + } + }; + + /** + * Pauses the autoplay. + * @public + */ + Autoplay.prototype.pause = function() { + if (this._core.is('rotating') && !this._paused) { + // Pause the clock. + this._time = this.read(); + this._paused = true; + + window.clearTimeout(this._call); + } + }; + + /** + * Destroys the plugin. + */ + Autoplay.prototype.destroy = function() { + var handler, property; + + this.stop(); + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Navigation Plugin + * @version 2.3.4 + * @author Artus Kolanowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + 'use strict'; + + /** + * Creates the navigation plugin. + * @class The Navigation Plugin + * @param {Owl} carousel - The Owl Carousel. + */ + var Navigation = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * Indicates whether the plugin is initialized or not. + * @protected + * @type {Boolean} + */ + this._initialized = false; + + /** + * The current paging indexes. + * @protected + * @type {Array} + */ + this._pages = []; + + /** + * All DOM elements of the user interface. + * @protected + * @type {Object} + */ + this._controls = {}; + + /** + * Markup for an indicator. + * @protected + * @type {Array.} + */ + this._templates = []; + + /** + * The carousel element. + * @type {jQuery} + */ + this.$element = this._core.$element; + + /** + * Overridden methods of the carousel. + * @protected + * @type {Object} + */ + this._overrides = { + next: this._core.next, + prev: this._core.prev, + to: this._core.to + }; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'prepared.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.dotsData) { + this._templates.push('
' + + $(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '
'); + } + }, this), + 'added.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.dotsData) { + this._templates.splice(e.position, 0, this._templates.pop()); + } + }, this), + 'remove.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.dotsData) { + this._templates.splice(e.position, 1); + } + }, this), + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name == 'position') { + this.draw(); + } + }, this), + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace && !this._initialized) { + this._core.trigger('initialize', null, 'navigation'); + this.initialize(); + this.update(); + this.draw(); + this._initialized = true; + this._core.trigger('initialized', null, 'navigation'); + } + }, this), + 'refreshed.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._initialized) { + this._core.trigger('refresh', null, 'navigation'); + this.update(); + this.draw(); + this._core.trigger('refreshed', null, 'navigation'); + } + }, this) + }; + + // set default options + this._core.options = $.extend({}, Navigation.Defaults, this._core.options); + + // register event handlers + this.$element.on(this._handlers); + }; + + /** + * Default options. + * @public + * @todo Rename `slideBy` to `navBy` + */ + Navigation.Defaults = { + nav: false, + navText: [ + '', + '' + ], + navSpeed: false, + navElement: 'button type="button" role="presentation"', + navContainer: false, + navContainerClass: 'owl-nav', + navClass: [ + 'owl-prev', + 'owl-next' + ], + slideBy: 1, + dotClass: 'owl-dot', + dotsClass: 'owl-dots', + dots: true, + dotsEach: false, + dotsData: false, + dotsSpeed: false, + dotsContainer: false + }; + + /** + * Initializes the layout of the plugin and extends the carousel. + * @protected + */ + Navigation.prototype.initialize = function() { + var override, + settings = this._core.settings; + + // create DOM structure for relative navigation + this._controls.$relative = (settings.navContainer ? $(settings.navContainer) + : $('
').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled'); + + this._controls.$previous = $('<' + settings.navElement + '>') + .addClass(settings.navClass[0]) + .html(settings.navText[0]) + .prependTo(this._controls.$relative) + .on('click', $.proxy(function(e) { + this.prev(settings.navSpeed); + }, this)); + this._controls.$next = $('<' + settings.navElement + '>') + .addClass(settings.navClass[1]) + .html(settings.navText[1]) + .appendTo(this._controls.$relative) + .on('click', $.proxy(function(e) { + this.next(settings.navSpeed); + }, this)); + + // create DOM structure for absolute navigation + if (!settings.dotsData) { + this._templates = [ $('` | Allows you to select a node or customize the HTML for the "Next" arrow. +pauseOnDotsHover | boolean | false | Pauses autoplay when a dot is hovered +pauseOnFocus | boolean | true | Pauses autoplay when slider is focussed +pauseOnHover | boolean | true | Pauses autoplay on hover +prevArrow | string (html \| jQuery selector) \| object (DOM node \| jQuery object) | `` | Allows you to select a node or customize the HTML for the "Previous" arrow. +respondTo | string | 'window' | Width that responsive object responds to. Can be 'window', 'slider' or 'min' (the smaller of the two). +responsive | array | null | Array of objects [containing breakpoints and settings objects (see example)](#responsive-option-example). Enables settings at given `breakpoint`. Set `settings` to "unslick" instead of an object to disable slick at a given breakpoint. +rows | int | 1 | Setting this to more than 1 initializes grid mode. Use slidesPerRow to set how many slides should be in each row. +rtl | boolean | false | Change the slider's direction to become right-to-left +slide | string | '' | Slide element query +slidesPerRow | int | 1 | With grid mode initialized via the rows option, this sets how many slides are in each grid row. +slidesToScroll | int | 1 | # of slides to scroll at a time +slidesToShow | int | 1 | # of slides to show at a time +speed | int | 300 | Transition speed +swipe | boolean | true | Enables touch swipe +swipeToSlide | boolean | false | Swipe to slide irrespective of slidesToScroll +touchMove | boolean | true | Enables slide moving with touch +touchThreshold | int | 5 | To advance slides, the user must swipe a length of (1/touchThreshold) * the width of the slider. +useCSS | boolean | true | Enable/Disable CSS Transitions +useTransform | boolean | true | Enable/Disable CSS Transforms +variableWidth | boolean | false | Disables automatic slide width calculation +vertical | boolean | false | Vertical slide direction +verticalSwiping | boolean | false | Changes swipe direction to vertical +waitForAnimate | boolean | true | Ignores requests to advance the slide while animating +zIndex | number | 1000 | Set the zIndex values for slides, useful for IE9 and lower + +##### Responsive Option Example +The responsive option, and value, is quite unique and powerful. +You can use it like so: + +```javascript +$(".slider").slick({ + + // normal options... + infinite: false, + + // the magic + responsive: [{ + + breakpoint: 1024, + settings: { + slidesToShow: 3, + infinite: true + } + + }, { + + breakpoint: 600, + settings: { + slidesToShow: 2, + dots: true + } + + }, { + + breakpoint: 300, + settings: "unslick" // destroys slick + + }] +}); +``` + + + + +### Events + +In slick 1.4, callback methods were deprecated and replaced with events. Use them before the initialization of slick as shown below: + +```javascript +// On swipe event +$('.your-element').on('swipe', function(event, slick, direction){ + console.log(direction); + // left +}); + +// On edge hit +$('.your-element').on('edge', function(event, slick, direction){ + console.log('edge was hit') +}); + +// On before slide change +$('.your-element').on('beforeChange', function(event, slick, currentSlide, nextSlide){ + console.log(nextSlide); +}); +``` + +Event | Params | Description +------ | -------- | ----------- +afterChange | event, slick, currentSlide | After slide change callback +beforeChange | event, slick, currentSlide, nextSlide | Before slide change callback +breakpoint | event, slick, breakpoint | Fires after a breakpoint is hit +destroy | event, slick | When slider is destroyed, or unslicked. +edge | event, slick, direction | Fires when an edge is overscrolled in non-infinite mode. +init | event, slick | When Slick initializes for the first time callback. Note that this event should be defined before initializing the slider. +reInit | event, slick | Every time Slick (re-)initializes callback +setPosition | event, slick | Every time Slick recalculates position +swipe | event, slick, direction | Fires after swipe/drag +lazyLoaded | event, slick, image, imageSource | Fires after image loads lazily +lazyLoadError | event, slick, image, imageSource | Fires after image fails to load + + +#### Methods + +Methods are called on slick instances through the slick method itself in version 1.4, see below: + +```javascript +// Add a slide +$('.your-element').slick('slickAdd',"
"); + +// Get the current slide +var currentSlide = $('.your-element').slick('slickCurrentSlide'); +``` + +This new syntax allows you to call any internal slick method as well: + +```javascript +// Manually refresh positioning of slick +$('.your-element').slick('setPosition'); +``` + + +Method | Argument | Description +------ | -------- | ----------- +`slick` | options : object | Initializes Slick +`unslick` | | Destroys Slick +`slickNext` | | Triggers next slide +`slickPrev` | | Triggers previous slide +`slickPause` | | Pause Autoplay +`slickPlay` | | Start Autoplay (_will also set `autoplay` option to `true`_) +`slickGoTo` | index : int, dontAnimate : bool | Goes to slide by index, skipping animation if second parameter is set to true +`slickCurrentSlide` | | Returns the current slide index +`slickAdd` | element : html or DOM object, index: int, addBefore: bool | Add a slide. If an index is provided, will add at that index, or before if addBefore is set. If no index is provided, add to the end or to the beginning if addBefore is set. Accepts HTML String || Object +`slickRemove` | index: int, removeBefore: bool | Remove slide by index. If removeBefore is set true, remove slide preceding index, or the first slide if no index is specified. If removeBefore is set to false, remove the slide following index, or the last slide if no index is set. +`slickFilter` | filter : selector or function | Filters slides using jQuery .filter syntax +`slickUnfilter` | | Removes applied filter +`slickGetOption` | option : string(option name) | Gets an option value. +`slickSetOption` | change an option, `refresh` is always `boolean` and will update UI changes... + | `option, value, refresh` | change a [single `option`](https://github.com/kenwheeler/slick#settings) to given `value`; `refresh` is optional. + | `"responsive", [{ breakpoint: n, settings: {} }, ... ], refresh` | change or add [whole sets of responsive options](#responsive-option-example) + | `{ option: value, option: value, ... }, refresh` | change [multiple `option`s](https://github.com/kenwheeler/slick#settings) to corresponding `value`s. + + +#### Example + +Initialize with: + +```javascript +$(element).slick({ + dots: true, + speed: 500 +}); + ``` + +Change the speed with: + +```javascript +$(element).slick('slickSetOption', 'speed', 5000, true); +``` + +Destroy with: + +```javascript +$(element).slick('unslick'); +``` + + +#### Sass Variables + +Variable | Type | Default | Description +------ | ---- | ------- | ----------- +$slick-font-path | string | "./fonts/" | Directory path for the slick icon font +$slick-font-family | string | "slick" | Font-family for slick icon font +$slick-loader-path | string | "./" | Directory path for the loader image +$slick-arrow-color | color | white | Color of the left/right arrow icons +$slick-dot-color | color | black | Color of the navigation dots +$slick-dot-color-active | color | $slick-dot-color | Color of the active navigation dot +$slick-prev-character | string | '\2190' | Unicode character code for the previous arrow icon +$slick-next-character | string | '\2192' | Unicode character code for the next arrow icon +$slick-dot-character | string | '\2022' | Unicode character code for the navigation dot icon +$slick-dot-size | pixels | 6px | Size of the navigation dots + +#### Browser support + +Slick works on IE8+ in addition to other modern browsers such as Chrome, Firefox, and Safari. + +#### Dependencies + +jQuery 1.7 + +#### License + +Copyright (c) 2014 Ken Wheeler + +Licensed under the MIT license. + +Free as in Bacon. diff --git a/libraries/slick/bower.json b/libraries/slick/bower.json new file mode 100755 index 0000000..a06cd77 --- /dev/null +++ b/libraries/slick/bower.json @@ -0,0 +1,32 @@ +{ + "name": "slick-carousel", + "main": [ + "slick/slick.js", + "slick/slick.css", + "slick/slick.less", + "slick/slick.scss" + ], + "homepage": "https://github.com/kenwheeler/slick", + "authors": [ + "Ken Wheeler " + ], + "description": "the last carousel you'll ever need", + "keywords": [ + "responsive", + "carousel", + "jquery" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests", + "package.json", + "index.html" + ], + "dependencies": { + "jquery": ">=1.7" + } +} diff --git a/libraries/slick/component.json b/libraries/slick/component.json new file mode 100755 index 0000000..4b71b23 --- /dev/null +++ b/libraries/slick/component.json @@ -0,0 +1,18 @@ +{ + "name": "slick", + "repo": "kenwheeler/slick", + "description": "the last carousel you'll ever need", + "version": "1.8.0", + "keywords": ["ui", "jquery", "carousel", "responsive", "slider"], + "dependencies": { + "component/jquery": "*" + }, + "development": {}, + "scripts": { + "slick/slick.js": "slick.js" + }, + "styles": { + "slick/slick.css": "slick.css", + "slick/slick-theme.css": "slick-theme.css" + } +} \ No newline at end of file diff --git a/libraries/slick/index.html b/libraries/slick/index.html new file mode 100755 index 0000000..2e7e575 --- /dev/null +++ b/libraries/slick/index.html @@ -0,0 +1,373 @@ + + + + Slick Playground + + + + + + + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + +
+
+ + + + + + + diff --git a/libraries/slick/package.json b/libraries/slick/package.json new file mode 100755 index 0000000..01d1f92 --- /dev/null +++ b/libraries/slick/package.json @@ -0,0 +1,44 @@ +{ + "name": "slick-carousel", + "version": "1.8.0", + "description": "the last carousel you'll ever need", + "main": "slick/slick.js", + "repository": { + "type": "git", + "url": "https://github.com/kenwheeler/slick.git" + }, + "keywords": ["carousel", "slick", "responsive", "js", "slider"], + "author": "Ken Wheeler ", + "contributors": [ + { + "name": "ken wheeler", + "email": "ken_wheeler@me.com", + "url": "http://kenwheeler.github.io/" + }, + { + "name": "simon goellner", + "email": "simey.me@gmail.com", + "url": "http://simey.me" + }, + { + "name": "ahmad el-alfy", + "email": "ahmadalfy@gmail.com", + "url": "http://www.alfy.me" + }, + { + "name": "leggomuhgreggo", + "email": "gwestneat@gmail.com" + }, + { + "name": "ashley mcknight", + "email": "ash@sharpteef.net" + } + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/kenwheeler/slick/issues" + }, + "peerDependencies": { + "jquery": ">=1.8.0" + } +} diff --git a/libraries/slick/slick.jquery.json b/libraries/slick/slick.jquery.json new file mode 100755 index 0000000..89c9e11 --- /dev/null +++ b/libraries/slick/slick.jquery.json @@ -0,0 +1,34 @@ +{ + "name": "slick", + "title": "slick", + "description": "A jQuery responsive touch carousel", + "keywords": [ + "responsive", + "slider", + "carousel", + "touch", + "mobile" + ], + "version": "1.8.0", + "author": { + "name": "Ken Wheeler", + "url": "http://kenwheeler.github.io" + }, + "maintainers": [{ + "name": "Ken Wheeler", + "email": "dubmediagroup@gmail.com", + "url": "http://www.dubmediagroup.com" + }], + "licenses": [{ + "type": "MIT", + "url": "https://github.com/kenwheeler/slick/blob/master/LICENSE" + }], + "demo": "http://kenwheeler.github.io/slick/", + "bugs": "https://github.com/kenwheeler/slick/issues", + "homepage": "https://github.com/kenwheeler/slick/", + "docs": "https://github.com/kenwheeler/slick/", + "download": "https://github.com/kenwheeler/slick/archive/master.zip", + "dependencies": { + "jquery": ">=1.7" + } +} diff --git a/libraries/slick/slick/ajax-loader.gif b/libraries/slick/slick/ajax-loader.gif new file mode 100755 index 0000000..e0e6e97 Binary files /dev/null and b/libraries/slick/slick/ajax-loader.gif differ diff --git a/libraries/slick/slick/config.rb b/libraries/slick/slick/config.rb new file mode 100755 index 0000000..81f5ae3 --- /dev/null +++ b/libraries/slick/slick/config.rb @@ -0,0 +1,10 @@ +css_dir = "." +sass_dir = "." +images_dir = "." +fonts_dir = "fonts" +relative_assets = true + +output_style = :compact +line_comments = false + +preferred_syntax = :scss \ No newline at end of file diff --git a/libraries/slick/slick/fonts/slick.eot b/libraries/slick/slick/fonts/slick.eot new file mode 100755 index 0000000..2cbab9c Binary files /dev/null and b/libraries/slick/slick/fonts/slick.eot differ diff --git a/libraries/slick/slick/fonts/slick.svg b/libraries/slick/slick/fonts/slick.svg new file mode 100755 index 0000000..b36a66a --- /dev/null +++ b/libraries/slick/slick/fonts/slick.svg @@ -0,0 +1,14 @@ + + + +Generated by Fontastic.me + + + + + + + + + + diff --git a/libraries/slick/slick/fonts/slick.ttf b/libraries/slick/slick/fonts/slick.ttf new file mode 100755 index 0000000..9d03461 Binary files /dev/null and b/libraries/slick/slick/fonts/slick.ttf differ diff --git a/libraries/slick/slick/fonts/slick.woff b/libraries/slick/slick/fonts/slick.woff new file mode 100755 index 0000000..8ee9972 Binary files /dev/null and b/libraries/slick/slick/fonts/slick.woff differ diff --git a/libraries/slick/slick/slick-theme.css b/libraries/slick/slick/slick-theme.css new file mode 100755 index 0000000..1232fca --- /dev/null +++ b/libraries/slick/slick/slick-theme.css @@ -0,0 +1,204 @@ +@charset 'UTF-8'; +/* Slider */ +.slick-loading .slick-list +{ + background: #fff url('./ajax-loader.gif') center center no-repeat; +} + +/* Icons */ +@font-face +{ + font-family: 'slick'; + font-weight: normal; + font-style: normal; + + src: url('./fonts/slick.eot'); + src: url('./fonts/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick.woff') format('woff'), url('./fonts/slick.ttf') format('truetype'), url('./fonts/slick.svg#slick') format('svg'); +} +/* Arrows */ +.slick-prev, +.slick-next +{ + font-size: 0; + line-height: 0; + + position: absolute; + top: 50%; + + display: block; + + width: 20px; + height: 20px; + padding: 0; + -webkit-transform: translate(0, -50%); + -ms-transform: translate(0, -50%); + transform: translate(0, -50%); + + cursor: pointer; + + color: transparent; + border: none; + outline: none; + background: transparent; +} +.slick-prev:hover, +.slick-prev:focus, +.slick-next:hover, +.slick-next:focus +{ + color: transparent; + outline: none; + background: transparent; +} +.slick-prev:hover:before, +.slick-prev:focus:before, +.slick-next:hover:before, +.slick-next:focus:before +{ + opacity: 1; +} +.slick-prev.slick-disabled:before, +.slick-next.slick-disabled:before +{ + opacity: .25; +} + +.slick-prev:before, +.slick-next:before +{ + font-family: 'slick'; + font-size: 20px; + line-height: 1; + + opacity: .75; + color: white; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.slick-prev +{ + left: -25px; +} +[dir='rtl'] .slick-prev +{ + right: -25px; + left: auto; +} +.slick-prev:before +{ + content: 'â†'; +} +[dir='rtl'] .slick-prev:before +{ + content: '→'; +} + +.slick-next +{ + right: -25px; +} +[dir='rtl'] .slick-next +{ + right: auto; + left: -25px; +} +.slick-next:before +{ + content: '→'; +} +[dir='rtl'] .slick-next:before +{ + content: 'â†'; +} + +/* Dots */ +.slick-dotted.slick-slider +{ + margin-bottom: 30px; +} + +.slick-dots +{ + position: absolute; + bottom: -25px; + + display: block; + + width: 100%; + padding: 0; + margin: 0; + + list-style: none; + + text-align: center; +} +.slick-dots li +{ + position: relative; + + display: inline-block; + + width: 20px; + height: 20px; + margin: 0 5px; + padding: 0; + + cursor: pointer; +} +.slick-dots li button +{ + font-size: 0; + line-height: 0; + + display: block; + + width: 20px; + height: 20px; + padding: 5px; + + cursor: pointer; + + color: transparent; + border: 0; + outline: none; + background: transparent; +} +.slick-dots li button:hover, +.slick-dots li button:focus +{ + outline: none; +} +.slick-dots li button:hover:before, +.slick-dots li button:focus:before +{ + opacity: 1; +} +.slick-dots li button:before +{ + font-family: 'slick'; + font-size: 6px; + line-height: 20px; + + position: absolute; + top: 0; + left: 0; + + width: 20px; + height: 20px; + + content: '•'; + text-align: center; + + opacity: .25; + color: black; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.slick-dots li.slick-active button:before +{ + opacity: .75; + color: black; +} diff --git a/libraries/slick/slick/slick-theme.less b/libraries/slick/slick/slick-theme.less new file mode 100755 index 0000000..e06fc18 --- /dev/null +++ b/libraries/slick/slick/slick-theme.less @@ -0,0 +1,168 @@ +@charset "UTF-8"; + +// Default Variables + +@slick-font-path: "./fonts/"; +@slick-font-family: "slick"; +@slick-loader-path: "./"; +@slick-arrow-color: white; +@slick-dot-color: black; +@slick-dot-color-active: @slick-dot-color; +@slick-prev-character: "â†"; +@slick-next-character: "→"; +@slick-dot-character: "•"; +@slick-dot-size: 6px; +@slick-opacity-default: 0.75; +@slick-opacity-on-hover: 1; +@slick-opacity-not-active: 0.25; + +/* Slider */ +.slick-loading .slick-list{ + background: #fff url('@{slick-loader-path}ajax-loader.gif') center center no-repeat; +} + +/* Arrows */ +.slick-prev, +.slick-next { + position: absolute; + display: block; + height: 20px; + width: 20px; + line-height: 0px; + font-size: 0px; + cursor: pointer; + background: transparent; + color: transparent; + top: 50%; + -webkit-transform: translate(0, -50%); + -ms-transform: translate(0, -50%); + transform: translate(0, -50%); + padding: 0; + border: none; + outline: none; + &:hover, &:focus { + outline: none; + background: transparent; + color: transparent; + &:before { + opacity: @slick-opacity-on-hover; + } + } + &.slick-disabled:before { + opacity: @slick-opacity-not-active; + } +} + +.slick-prev:before, .slick-next:before { + font-family: @slick-font-family; + font-size: 20px; + line-height: 1; + color: @slick-arrow-color; + opacity: @slick-opacity-default; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + & when ( @slick-font-family = 'slick' ) { + /* Icons */ + @font-face { + font-family: 'slick'; + font-weight: normal; + font-style: normal; + src: url('@{slick-font-path}slick.eot'); + src: url('@{slick-font-path}slick.eot?#iefix') format('embedded-opentype'), url('@{slick-font-path}slick.woff') format('woff'), url('@{slick-font-path}slick.ttf') format('truetype'), url('@{slick-font-path}slick.svg#slick') format('svg'); + } + } +} + +.slick-prev { + left: -25px; + [dir="rtl"] & { + left: auto; + right: -25px; + } + &:before { + content: @slick-prev-character; + [dir="rtl"] & { + content: @slick-next-character; + } + } +} + +.slick-next { + right: -25px; + [dir="rtl"] & { + left: -25px; + right: auto; + } + &:before { + content: @slick-next-character; + [dir="rtl"] & { + content: @slick-prev-character; + } + } +} + +/* Dots */ + +.slick-dotted .slick-slider { + margin-bottom: 30px; +} + +.slick-dots { + position: absolute; + bottom: -25px; + list-style: none; + display: block; + text-align: center; + padding: 0; + margin: 0; + width: 100%; + li { + position: relative; + display: inline-block; + height: 20px; + width: 20px; + margin: 0 5px; + padding: 0; + cursor: pointer; + button { + border: 0; + background: transparent; + display: block; + height: 20px; + width: 20px; + outline: none; + line-height: 0px; + font-size: 0px; + color: transparent; + padding: 5px; + cursor: pointer; + &:hover, &:focus { + outline: none; + &:before { + opacity: @slick-opacity-on-hover; + } + } + &:before { + position: absolute; + top: 0; + left: 0; + content: @slick-dot-character; + width: 20px; + height: 20px; + font-family: @slick-font-family; + font-size: @slick-dot-size; + line-height: 20px; + text-align: center; + color: @slick-dot-color; + opacity: @slick-opacity-not-active; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + } + &.slick-active button:before { + color: @slick-dot-color-active; + opacity: @slick-opacity-default; + } + } +} diff --git a/libraries/slick/slick/slick-theme.scss b/libraries/slick/slick/slick-theme.scss new file mode 100755 index 0000000..7fe63e1 --- /dev/null +++ b/libraries/slick/slick/slick-theme.scss @@ -0,0 +1,194 @@ +@charset "UTF-8"; + +// Default Variables + +// Slick icon entity codes outputs the following +// "\2190" outputs ascii character "â†" +// "\2192" outputs ascii character "→" +// "\2022" outputs ascii character "•" + +$slick-font-path: "./fonts/" !default; +$slick-font-family: "slick" !default; +$slick-loader-path: "./" !default; +$slick-arrow-color: white !default; +$slick-dot-color: black !default; +$slick-dot-color-active: $slick-dot-color !default; +$slick-prev-character: "\2190" !default; +$slick-next-character: "\2192" !default; +$slick-dot-character: "\2022" !default; +$slick-dot-size: 6px !default; +$slick-opacity-default: 0.75 !default; +$slick-opacity-on-hover: 1 !default; +$slick-opacity-not-active: 0.25 !default; + +@function slick-image-url($url) { + @if function-exists(image-url) { + @return image-url($url); + } + @else { + @return url($slick-loader-path + $url); + } +} + +@function slick-font-url($url) { + @if function-exists(font-url) { + @return font-url($url); + } + @else { + @return url($slick-font-path + $url); + } +} + +/* Slider */ + +.slick-list { + .slick-loading & { + background: #fff slick-image-url("ajax-loader.gif") center center no-repeat; + } +} + +/* Icons */ +@if $slick-font-family == "slick" { + @font-face { + font-family: "slick"; + src: slick-font-url("slick.eot"); + src: slick-font-url("slick.eot?#iefix") format("embedded-opentype"), slick-font-url("slick.woff") format("woff"), slick-font-url("slick.ttf") format("truetype"), slick-font-url("slick.svg#slick") format("svg"); + font-weight: normal; + font-style: normal; + } +} + +/* Arrows */ + +.slick-prev, +.slick-next { + position: absolute; + display: block; + height: 20px; + width: 20px; + line-height: 0px; + font-size: 0px; + cursor: pointer; + background: transparent; + color: transparent; + top: 50%; + -webkit-transform: translate(0, -50%); + -ms-transform: translate(0, -50%); + transform: translate(0, -50%); + padding: 0; + border: none; + outline: none; + &:hover, &:focus { + outline: none; + background: transparent; + color: transparent; + &:before { + opacity: $slick-opacity-on-hover; + } + } + &.slick-disabled:before { + opacity: $slick-opacity-not-active; + } + &:before { + font-family: $slick-font-family; + font-size: 20px; + line-height: 1; + color: $slick-arrow-color; + opacity: $slick-opacity-default; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +} + +.slick-prev { + left: -25px; + [dir="rtl"] & { + left: auto; + right: -25px; + } + &:before { + content: $slick-prev-character; + [dir="rtl"] & { + content: $slick-next-character; + } + } +} + +.slick-next { + right: -25px; + [dir="rtl"] & { + left: -25px; + right: auto; + } + &:before { + content: $slick-next-character; + [dir="rtl"] & { + content: $slick-prev-character; + } + } +} + +/* Dots */ + +.slick-dotted.slick-slider { + margin-bottom: 30px; +} + +.slick-dots { + position: absolute; + bottom: -25px; + list-style: none; + display: block; + text-align: center; + padding: 0; + margin: 0; + width: 100%; + li { + position: relative; + display: inline-block; + height: 20px; + width: 20px; + margin: 0 5px; + padding: 0; + cursor: pointer; + button { + border: 0; + background: transparent; + display: block; + height: 20px; + width: 20px; + outline: none; + line-height: 0px; + font-size: 0px; + color: transparent; + padding: 5px; + cursor: pointer; + &:hover, &:focus { + outline: none; + &:before { + opacity: $slick-opacity-on-hover; + } + } + &:before { + position: absolute; + top: 0; + left: 0; + content: $slick-dot-character; + width: 20px; + height: 20px; + font-family: $slick-font-family; + font-size: $slick-dot-size; + line-height: 20px; + text-align: center; + color: $slick-dot-color; + opacity: $slick-opacity-not-active; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + } + &.slick-active button:before { + color: $slick-dot-color-active; + opacity: $slick-opacity-default; + } + } +} diff --git a/libraries/slick/slick/slick.css b/libraries/slick/slick/slick.css new file mode 100755 index 0000000..57477e8 --- /dev/null +++ b/libraries/slick/slick/slick.css @@ -0,0 +1,119 @@ +/* Slider */ +.slick-slider +{ + position: relative; + + display: block; + box-sizing: border-box; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + -webkit-touch-callout: none; + -khtml-user-select: none; + -ms-touch-action: pan-y; + touch-action: pan-y; + -webkit-tap-highlight-color: transparent; +} + +.slick-list +{ + position: relative; + + display: block; + overflow: hidden; + + margin: 0; + padding: 0; +} +.slick-list:focus +{ + outline: none; +} +.slick-list.dragging +{ + cursor: pointer; + cursor: hand; +} + +.slick-slider .slick-track, +.slick-slider .slick-list +{ + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +.slick-track +{ + position: relative; + top: 0; + left: 0; + + display: block; + margin-left: auto; + margin-right: auto; +} +.slick-track:before, +.slick-track:after +{ + display: table; + + content: ''; +} +.slick-track:after +{ + clear: both; +} +.slick-loading .slick-track +{ + visibility: hidden; +} + +.slick-slide +{ + display: none; + float: left; + + height: 100%; + min-height: 1px; +} +[dir='rtl'] .slick-slide +{ + float: right; +} +.slick-slide img +{ + display: block; +} +.slick-slide.slick-loading img +{ + display: none; +} +.slick-slide.dragging img +{ + pointer-events: none; +} +.slick-initialized .slick-slide +{ + display: block; +} +.slick-loading .slick-slide +{ + visibility: hidden; +} +.slick-vertical .slick-slide +{ + display: block; + + height: auto; + + border: 1px solid transparent; +} +.slick-arrow.slick-hidden { + display: none; +} diff --git a/libraries/slick/slick/slick.js b/libraries/slick/slick/slick.js new file mode 100755 index 0000000..9529989 --- /dev/null +++ b/libraries/slick/slick/slick.js @@ -0,0 +1,3004 @@ +/* + _ _ _ _ + ___| (_) ___| | __ (_)___ +/ __| | |/ __| |/ / | / __| +\__ \ | | (__| < _ | \__ \ +|___/_|_|\___|_|\_(_)/ |___/ + |__/ + + Version: 1.8.0 + Author: Ken Wheeler + Website: http://kenwheeler.github.io + Docs: http://kenwheeler.github.io/slick + Repo: http://github.com/kenwheeler/slick + Issues: http://github.com/kenwheeler/slick/issues + + */ +/* global window, document, define, jQuery, setInterval, clearInterval */ +;(function(factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + define(['jquery'], factory); + } else if (typeof exports !== 'undefined') { + module.exports = factory(require('jquery')); + } else { + factory(jQuery); + } + +}(function($) { + 'use strict'; + var Slick = window.Slick || {}; + + Slick = (function() { + + var instanceUid = 0; + + function Slick(element, settings) { + + var _ = this, dataSettings; + + _.defaults = { + accessibility: true, + adaptiveHeight: false, + appendArrows: $(element), + appendDots: $(element), + arrows: true, + asNavFor: null, + prevArrow: '', + nextArrow: '', + autoplay: false, + autoplaySpeed: 3000, + centerMode: false, + centerPadding: '50px', + cssEase: 'ease', + customPaging: function(slider, i) { + return $('',nextArrow:'',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(e,t){return i('
"; + } + // line 52 + yield " + +"; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_key'], $context['item'], $context['_parent']); + $context = array_intersect_key($context, $_parent) + $_parent; + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 23 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar(Twig\Extension\CoreExtension::spaceless($___internal_parse_0_)); + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["menu_items"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "modules/contrib/superfish/templates/superfish-menu-items.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 157 => 23, 147 => 52, 142 => 51, 137 => 50, 134 => 49, 128 => 48, 123 => 47, 116 => 46, 113 => 45, 108 => 43, 103 => 42, 97 => 40, 91 => 38, 88 => 37, 84 => 35, 82 => 34, 78 => 33, 75 => 32, 72 => 31, 69 => 30, 66 => 29, 63 => 28, 60 => 27, 58 => 26, 55 => 25, 51 => 24, 49 => 23, 47 => 22, 44 => 21,); + } + + public function getSourceContext(): Source + { + return new Source("", "modules/contrib/superfish/templates/superfish-menu-items.html.twig", "/var/www/html/arduino_10/modules/contrib/superfish/templates/superfish-menu-items.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 22, "apply" => 23, "for" => 24, "if" => 26); + static $filters = array("escape" => 33, "spaceless" => 23); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + ['set', 'apply', 'for', 'if'], + ['escape', 'spaceless'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_superfish.html.twig_W9G6UrBJTL3_TLMbXf-cbXX3z/.htaccess b/sites/default/files/php/twig/67188e7262e38_superfish.html.twig_W9G6UrBJTL3_TLMbXf-cbXX3z/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_superfish.html.twig_W9G6UrBJTL3_TLMbXf-cbXX3z/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_superfish.html.twig_W9G6UrBJTL3_TLMbXf-cbXX3z/GrC6fmguNIfUUkt_D3JWijoBAQnJN-SV3lDeoLaieUA.php b/sites/default/files/php/twig/67188e7262e38_superfish.html.twig_W9G6UrBJTL3_TLMbXf-cbXX3z/GrC6fmguNIfUUkt_D3JWijoBAQnJN-SV3lDeoLaieUA.php new file mode 100644 index 0000000..dbec759 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_superfish.html.twig_W9G6UrBJTL3_TLMbXf-cbXX3z/GrC6fmguNIfUUkt_D3JWijoBAQnJN-SV3lDeoLaieUA.php @@ -0,0 +1,118 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 16 + yield " +
    extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["id"] ?? null), 17, $this->source), "html", null, true); + yield "\" class=\""; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["menu_classes"] ?? null), 17, $this->source), "html", null, true); + yield "\"> + "; + // line 18 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["menu_items"] ?? null), 18, $this->source), "html", null, true); + yield " +
+"; + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["id", "menu_classes", "menu_items"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "modules/contrib/superfish/templates/superfish.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 53 => 18, 47 => 17, 44 => 16,); + } + + public function getSourceContext(): Source + { + return new Source("", "modules/contrib/superfish/templates/superfish.html.twig", "/var/www/html/arduino_10/modules/contrib/superfish/templates/superfish.html.twig"); + } + + public function checkSecurity() + { + static $tags = array(); + static $filters = array("escape" => 17); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + [], + ['escape'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_system-config-form.html.t_i8g4Kgv-XQtnh_L2CZNdNtZ3A/.htaccess b/sites/default/files/php/twig/67188e7262e38_system-config-form.html.t_i8g4Kgv-XQtnh_L2CZNdNtZ3A/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_system-config-form.html.t_i8g4Kgv-XQtnh_L2CZNdNtZ3A/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_system-config-form.html.t_i8g4Kgv-XQtnh_L2CZNdNtZ3A/DeHgKK39rrFSr8khrEQb8JIewgZ2hYdbDxz2xqMKbfw.php b/sites/default/files/php/twig/67188e7262e38_system-config-form.html.t_i8g4Kgv-XQtnh_L2CZNdNtZ3A/DeHgKK39rrFSr8khrEQb8JIewgZ2hYdbDxz2xqMKbfw.php new file mode 100644 index 0000000..f3d6ae4 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_system-config-form.html.t_i8g4Kgv-XQtnh_L2CZNdNtZ3A/DeHgKK39rrFSr8khrEQb8JIewgZ2hYdbDxz2xqMKbfw.php @@ -0,0 +1,108 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 17 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["form"] ?? null), 17, $this->source), "html", null, true); + yield " +"; + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["form"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "core/modules/system/templates/system-config-form.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 44 => 17,); + } + + public function getSourceContext(): Source + { + return new Source("", "core/modules/system/templates/system-config-form.html.twig", "/var/www/html/arduino_10/core/modules/system/templates/system-config-form.html.twig"); + } + + public function checkSecurity() + { + static $tags = array(); + static $filters = array("escape" => 17); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + [], + ['escape'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_system-modules-details.ht_aiQfbPCF2tCkqIcBYXnC53f-c/.htaccess b/sites/default/files/php/twig/67188e7262e38_system-modules-details.ht_aiQfbPCF2tCkqIcBYXnC53f-c/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_system-modules-details.ht_aiQfbPCF2tCkqIcBYXnC53f-c/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_system-modules-details.ht_aiQfbPCF2tCkqIcBYXnC53f-c/GLMEoMQbdXUWYZK0ics5xcQMai8rLoM_1ePPKaXhUDs.php b/sites/default/files/php/twig/67188e7262e38_system-modules-details.ht_aiQfbPCF2tCkqIcBYXnC53f-c/GLMEoMQbdXUWYZK0ics5xcQMai8rLoM_1ePPKaXhUDs.php new file mode 100644 index 0000000..d181ef7 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_system-modules-details.ht_aiQfbPCF2tCkqIcBYXnC53f-c/GLMEoMQbdXUWYZK0ics5xcQMai8rLoM_1ePPKaXhUDs.php @@ -0,0 +1,257 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 27 + yield " + + + + + + + + + "; + // line 36 + $context['_parent'] = $context; + $context['_seq'] = CoreExtension::ensureTraversable(($context["modules"] ?? null)); + $context['loop'] = [ + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ]; + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["module"]) { + // line 37 + yield " "; + $context["zebra"] = Twig\Extension\CoreExtension::cycle(["odd", "even"], $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index0", [], "any", false, false, true, 37), 37, $this->source)); + // line 38 + yield " extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["module"], "attributes", [], "any", false, false, true, 38), "addClass", [($context["zebra"] ?? null)], "method", false, false, true, 38), 38, $this->source), "html", null, true); + yield "> + + + + + "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['revindex0'], $context['loop']['revindex'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_key'], $context['module'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 75 + yield " +
"; + // line 30 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar(t("Installed")); + yield ""; + // line 31 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar(t("Name")); + yield ""; + // line 32 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar(t("Description")); + yield "
+ "; + // line 40 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["module"], "checkbox", [], "any", false, false, true, 40), 40, $this->source), "html", null, true); + yield " + + + +
extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["module"], "enable_id", [], "any", false, false, true, 46), 46, $this->source), "html", null, true); + yield "-description\"> + extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["module"], "enable_id", [], "any", false, false, true, 47), 47, $this->source), "html", null, true); + yield "-description\" role=\"button\" aria-expanded=\"false\">"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["module"], "description", [], "any", false, false, true, 47), 47, $this->source), "html", null, true); + yield " +
+
+
+
"; + // line 51 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar(t("Machine name: @machine-name", ["@machine-name" => CoreExtension::getAttribute($this->env, $this->source, $context["module"], "machine_name", [], "any", false, false, true, 51)])); + yield "
+ "; + // line 52 + if (CoreExtension::getAttribute($this->env, $this->source, $context["module"], "version", [], "any", false, false, true, 52)) { + // line 53 + yield "
"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar(t("Version: @module-version", ["@module-version" => CoreExtension::getAttribute($this->env, $this->source, $context["module"], "version", [], "any", false, false, true, 53)])); + yield "
+ "; + } + // line 55 + yield " "; + if (CoreExtension::getAttribute($this->env, $this->source, $context["module"], "requires", [], "any", false, false, true, 55)) { + // line 56 + yield "
"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar(t("Requires: @module-list", ["@module-list" => CoreExtension::getAttribute($this->env, $this->source, $context["module"], "requires", [], "any", false, false, true, 56)])); + yield "
+ "; + } + // line 58 + yield " "; + if (CoreExtension::getAttribute($this->env, $this->source, $context["module"], "required_by", [], "any", false, false, true, 58)) { + // line 59 + yield "
"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar(t("Required by: @module-list", ["@module-list" => CoreExtension::getAttribute($this->env, $this->source, $context["module"], "required_by", [], "any", false, false, true, 59)])); + yield "
+ "; + } + // line 61 + yield "
+ "; + // line 62 + if (CoreExtension::getAttribute($this->env, $this->source, $context["module"], "links", [], "any", false, false, true, 62)) { + // line 63 + yield "
+ "; + // line 64 + $context['_parent'] = $context; + $context['_seq'] = CoreExtension::ensureTraversable(["help", "permissions", "configure"]); + foreach ($context['_seq'] as $context["_key"] => $context["link_type"]) { + // line 65 + yield " "; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed((($__internal_compile_0 = CoreExtension::getAttribute($this->env, $this->source, $context["module"], "links", [], "any", false, false, true, 65)) && is_array($__internal_compile_0) || $__internal_compile_0 instanceof ArrayAccess ? ($__internal_compile_0[$context["link_type"]] ?? null) : null), 65, $this->source), "html", null, true); + yield " + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_key'], $context['link_type'], $context['_parent']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 67 + yield "
+ "; + } + // line 69 + yield "
+
+
+
+"; + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["modules", "loop"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "core/modules/system/templates/system-modules-details.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 193 => 75, 174 => 69, 170 => 67, 161 => 65, 157 => 64, 154 => 63, 152 => 62, 149 => 61, 143 => 59, 140 => 58, 134 => 56, 131 => 55, 125 => 53, 123 => 52, 119 => 51, 110 => 47, 106 => 46, 96 => 43, 90 => 40, 84 => 38, 81 => 37, 64 => 36, 57 => 32, 53 => 31, 49 => 30, 44 => 27,); + } + + public function getSourceContext(): Source + { + return new Source("", "core/modules/system/templates/system-modules-details.html.twig", "/var/www/html/arduino_10/core/modules/system/templates/system-modules-details.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("for" => 36, "set" => 37, "if" => 52); + static $filters = array("t" => 30, "escape" => 38); + static $functions = array("cycle" => 37); + + try { + $this->sandbox->checkSecurity( + ['for', 'set', 'if'], + ['t', 'escape'], + ['cycle'], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_system.cache.html.twig_B6MoSsOn92BBAxq7arMoSwdU0/.htaccess b/sites/default/files/php/twig/67188e7262e38_system.cache.html.twig_B6MoSsOn92BBAxq7arMoSwdU0/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_system.cache.html.twig_B6MoSsOn92BBAxq7arMoSwdU0/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_system.cache.html.twig_B6MoSsOn92BBAxq7arMoSwdU0/D_2f0pCany-QfD1r5KxZt3XLmaSW5U9DjBM7jovChr8.php b/sites/default/files/php/twig/67188e7262e38_system.cache.html.twig_B6MoSsOn92BBAxq7arMoSwdU0/D_2f0pCany-QfD1r5KxZt3XLmaSW5U9DjBM7jovChr8.php new file mode 100644 index 0000000..eab4f3a --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_system.cache.html.twig_B6MoSsOn92BBAxq7arMoSwdU0/D_2f0pCany-QfD1r5KxZt3XLmaSW5U9DjBM7jovChr8.php @@ -0,0 +1,150 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 6 + $context["performance_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + yield t("Performance", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 7 + $context["performance_link"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["performance_link_text"] ?? null), 7, $this->source), "system.performance_settings")); + // line 8 + yield "

"; + yield t("Goal", array()); + yield "

+

"; + // line 9 + yield t("Clear the data in the site cache.", array()); + yield "

+

"; + // line 10 + yield t("What is the cache?", array()); + yield "

+

"; + // line 11 + yield t("Some of the calculations that are done when your site loads a page take a long time to run. To save time when these calculations would need to be done again, their results can be cached in your site's database. There are internal mechanisms to clear cached data when the conditions or assumptions that went into the calculation have changed, but you can also clear cached data manually. When your site is misbehaving, a good first step is to clear the cache and see if the problem goes away.", array()); + yield "

+

"; + // line 12 + yield t("Steps", array()); + yield "

+
    +
  1. "; + // line 14 + yield t("In the Manage administrative menu, navigate to Configuration > Development > @performance_link.", array("@performance_link" => ($context["performance_link"] ?? null), )); + yield "
  2. +
  3. "; + // line 15 + yield t("Click Clear all caches. Your site's cached data will be cleared.", array()); + yield "
  4. +
+

"; + // line 17 + yield t("Additional resources", array()); + yield "

+"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/system.cache.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 87 => 19, 82 => 17, 77 => 15, 73 => 14, 68 => 12, 64 => 11, 60 => 10, 56 => 9, 51 => 8, 49 => 7, 44 => 6,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/system.cache.html.twig", "/var/www/html/arduino_10/core/modules/system/help_topics/system.cache.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 6, "trans" => 6); + static $filters = array("escape" => 14); + static $functions = array("render_var" => 7, "help_route_link" => 7); + + try { + $this->sandbox->checkSecurity( + ['set', 'trans'], + ['escape'], + ['render_var', 'help_route_link'], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_system.config_basic.html._47l1u4c6qBhnSpMb5JluzOY-n/.htaccess b/sites/default/files/php/twig/67188e7262e38_system.config_basic.html._47l1u4c6qBhnSpMb5JluzOY-n/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_system.config_basic.html._47l1u4c6qBhnSpMb5JluzOY-n/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_system.config_basic.html._47l1u4c6qBhnSpMb5JluzOY-n/hZVGrwuRQaaZfasxp2eU0U3eOBHg2GboxpLk9VufND8.php b/sites/default/files/php/twig/67188e7262e38_system.config_basic.html._47l1u4c6qBhnSpMb5JluzOY-n/hZVGrwuRQaaZfasxp2eU0U3eOBHg2GboxpLk9VufND8.php new file mode 100644 index 0000000..ce5bb1c --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_system.config_basic.html._47l1u4c6qBhnSpMb5JluzOY-n/hZVGrwuRQaaZfasxp2eU0U3eOBHg2GboxpLk9VufND8.php @@ -0,0 +1,190 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 7 + $context["regional_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + yield t("Regional settings", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 8 + $context["regional_link"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["regional_link_text"] ?? null), 8, $this->source), "system.regional_settings")); + // line 9 + $context["information_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + yield t("Basic site settings", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 10 + $context["information_link"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["information_link_text"] ?? null), 10, $this->source), "system.site_information_settings")); + // line 11 + $context["datetime_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + yield t("Date and time formats", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 12 + $context["datetime_link"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["datetime_link_text"] ?? null), 12, $this->source), "entity.date_format.collection")); + // line 13 + yield "

"; + yield t("Goal", array()); + yield "

+

"; + // line 14 + yield t("Configure the basic settings of your site, including the site name, slogan, main email address, default time zone, default country, and the date formats to use.", array()); + yield "

+

"; + // line 15 + yield t("Steps", array()); + yield "

+
    +
  1. "; + // line 17 + yield t("In the Manage administrative menu, navigate to Configuration > System > @information_link.", array("@information_link" => ($context["information_link"] ?? null), )); + yield "
  2. +
  3. "; + // line 18 + yield t("Enter the site name, slogan, and main email address for your site.", array()); + yield "
  4. +
  5. "; + // line 19 + yield t("Click Save configuration. You should see a message indicating that the settings were saved.", array()); + yield "
  6. +
  7. "; + // line 20 + yield t("In the Manage administrative menu, navigate to Configuration > Region and language > @regional_link.", array("@regional_link" => ($context["regional_link"] ?? null), )); + yield "
  8. +
  9. "; + // line 21 + yield t("Select the default country and default time zone for your site.", array()); + yield "
  10. +
  11. "; + // line 22 + yield t("Click Save configuration. You should see a message indicating that the settings were saved.", array()); + yield "
  12. +
  13. "; + // line 23 + yield t("In the Manage administrative menu, navigate to Configuration > Region and language > @datetime_link.", array("@datetime_link" => ($context["datetime_link"] ?? null), )); + yield "
  14. +
  15. "; + // line 24 + yield t("Look at the Patterns for the Default long, medium, and short date formats. If any of them does not match the date format you want to use on your site, click Edit in that row to edit the format.", array()); + yield "
  16. +
  17. "; + // line 25 + yield t("Adjust the Format string until the Displayed format matches what you want. (Date format strings are composed of PHP date format codes.)", array()); + yield "
  18. +
  19. "; + // line 26 + yield t("Click Save format. You should see a message indicating that the format was saved.", array()); + yield "
  20. +
  21. "; + // line 27 + yield t("Repeat the previous three steps for any other date formats that need to be changed.", array()); + yield "
  22. +
+

"; + // line 29 + yield t("Additional resources", array()); + yield "

+

"; + // line 30 + yield t("PHP date format codes reference", array()); + yield "

"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/system.config_basic.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 128 => 30, 124 => 29, 119 => 27, 115 => 26, 111 => 25, 107 => 24, 103 => 23, 99 => 22, 95 => 21, 91 => 20, 87 => 19, 83 => 18, 79 => 17, 74 => 15, 70 => 14, 65 => 13, 63 => 12, 58 => 11, 56 => 10, 51 => 9, 49 => 8, 44 => 7,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/system.config_basic.html.twig", "/var/www/html/arduino_10/core/modules/system/help_topics/system.config_basic.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 7, "trans" => 7); + static $filters = array("escape" => 17); + static $functions = array("render_var" => 8, "help_route_link" => 8); + + try { + $this->sandbox->checkSecurity( + ['set', 'trans'], + ['escape'], + ['render_var', 'help_route_link'], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_system.config_error.html._Aau08Q91nNcszusNtQtERCmoy/.htaccess b/sites/default/files/php/twig/67188e7262e38_system.config_error.html._Aau08Q91nNcszusNtQtERCmoy/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_system.config_error.html._Aau08Q91nNcszusNtQtERCmoy/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_system.config_error.html._Aau08Q91nNcszusNtQtERCmoy/TguneWL_ztzDqZDKTY8w5QJKdcC5xentjVNUtIoLPFw.php b/sites/default/files/php/twig/67188e7262e38_system.config_error.html._Aau08Q91nNcszusNtQtERCmoy/TguneWL_ztzDqZDKTY8w5QJKdcC5xentjVNUtIoLPFw.php new file mode 100644 index 0000000..97937af --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_system.config_error.html._Aau08Q91nNcszusNtQtERCmoy/TguneWL_ztzDqZDKTY8w5QJKdcC5xentjVNUtIoLPFw.php @@ -0,0 +1,175 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 7 + $context["log_settings_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + yield t("Logging and errors", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 8 + $context["log_settings_link"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["log_settings_link_text"] ?? null), 8, $this->source), "system.logging_settings")); + // line 9 + $context["information_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + yield t("Basic site settings", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 10 + $context["information_link"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["information_link_text"] ?? null), 10, $this->source), "system.site_information_settings")); + // line 11 + yield "

"; + yield t("Goal", array()); + yield "

+

"; + // line 12 + yield t("Set up your site to respond appropriately to site errors, including 403 and 404 page responses.", array()); + yield "

+

"; + // line 13 + yield t("What are 403 and 404 responses?", array()); + yield "

+

"; + // line 14 + yield t("When a user visits a web page, the web server sends a response code in addition to the page content. A normal, non-error response has code 200. If the page does not exist on the site, the response code is 404. If the page exists, but the user is not authorized to visit the page, the response code is 403. The core software provides default responses for both 403 and 404 codes, but if you prefer, you can create your own pages for each.", array()); + yield "

+

"; + // line 15 + yield t("What other errors can occur?", array()); + yield "

+

"; + // line 16 + yield t("Under some situations, your site can generate error messages. These can be due to user errors (such as entering invalid values in a form, or incorrect configuration), PHP runtime errors, or software bugs. Some errors may result in a white screen of death (a totally blank web page response); less drastic errors will generate error messages. You can configure what happens when an error message is generated.", array()); + yield "

+

"; + // line 17 + yield t("Steps", array()); + yield "

+
    +
  1. "; + // line 19 + yield t("If desired, create pages to use for 403 and 404 responses. Note the URLs for these pages.", array()); + yield "
  2. +
  3. "; + // line 20 + yield t("In the Manage administrative menu, navigate to Configuration > System > @information_link.", array("@information_link" => ($context["information_link"] ?? null), )); + yield "
  4. +
  5. "; + // line 21 + yield t("In the Error pages section, enter the URL for your 403/404 pages, starting after the site home page URL. For example, if your site URL is https://example.com and your 404 page is https://example.com/not-found, you would enter /not-found.", array()); + yield "
  6. +
  7. "; + // line 22 + yield t("Click Save configuration. You should see a message indicating that the settings were saved.", array()); + yield "
  8. +
  9. "; + // line 23 + yield t("In the Manage administrative menu, navigate to Configuration > Development > @log_settings_link.", array("@log_settings_link" => ($context["log_settings_link"] ?? null), )); + yield "
  10. +
  11. "; + // line 24 + yield t("For a production site, select None under Error messages to display. For a site that is in development, select one of the other options, so that you are more aware of the errors the site is generating.", array()); + yield "
  12. +
  13. "; + // line 25 + yield t("Click Save configuration. You should see a message indicating that the settings were saved.", array()); + yield "
  14. +
"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/system.config_error.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 112 => 25, 108 => 24, 104 => 23, 100 => 22, 96 => 21, 92 => 20, 88 => 19, 83 => 17, 79 => 16, 75 => 15, 71 => 14, 67 => 13, 63 => 12, 58 => 11, 56 => 10, 51 => 9, 49 => 8, 44 => 7,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/system.config_error.html.twig", "/var/www/html/arduino_10/core/modules/system/help_topics/system.config_error.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 7, "trans" => 7); + static $filters = array("escape" => 20); + static $functions = array("render_var" => 8, "help_route_link" => 8); + + try { + $this->sandbox->checkSecurity( + ['set', 'trans'], + ['escape'], + ['render_var', 'help_route_link'], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_system.maintenance_mode.h_9vB4UVCqlat2m67imMuoa8tq6/.htaccess b/sites/default/files/php/twig/67188e7262e38_system.maintenance_mode.h_9vB4UVCqlat2m67imMuoa8tq6/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_system.maintenance_mode.h_9vB4UVCqlat2m67imMuoa8tq6/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_system.maintenance_mode.h_9vB4UVCqlat2m67imMuoa8tq6/iCbH5gXQEph8PDprZIqNvOSzrq_xzPI0PkrCrY9ItG8.php b/sites/default/files/php/twig/67188e7262e38_system.maintenance_mode.h_9vB4UVCqlat2m67imMuoa8tq6/iCbH5gXQEph8PDprZIqNvOSzrq_xzPI0PkrCrY9ItG8.php new file mode 100644 index 0000000..93dc044 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_system.maintenance_mode.h_9vB4UVCqlat2m67imMuoa8tq6/iCbH5gXQEph8PDprZIqNvOSzrq_xzPI0PkrCrY9ItG8.php @@ -0,0 +1,158 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 7 + $context["cache_topic"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getTopicLink("system.cache")); + // line 8 + $context["maintenance_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + yield t("Maintenance mode", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 9 + $context["maintenance_link"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["maintenance_link_text"] ?? null), 9, $this->source), "system.site_maintenance_mode")); + // line 10 + yield "

"; + yield t("Goal", array()); + yield "

+

"; + // line 11 + yield t("Put your site in maintenance mode to perform maintenance operations, and then return to normal mode when finished.", array()); + yield "

+

"; + // line 12 + yield t("What is maintenance mode?", array()); + yield "

+

"; + // line 13 + yield t("When your site is in maintenance mode, most site visitors will see a simple maintenance mode message page, rather than being able to use the full functionality of the site. Users with Use the site in maintenance mode permission who are already logged in will be able to use the full site, and the log in page at /user will also be accessible to anyone.", array()); + yield "

+

"; + // line 14 + yield t("Steps", array()); + yield "

+
    +
  1. "; + // line 16 + yield t("In the Manage administrative menu, navigate to Configuration > Development > @maintenance_link.", array("@maintenance_link" => ($context["maintenance_link"] ?? null), )); + yield "
  2. +
  3. "; + // line 17 + yield t("Check Put site into maintenance mode, optionally change the Message to display when in maintenance mode, and click Save configuration. Your site will be in maintenance mode.", array()); + yield "
  4. +
  5. "; + // line 18 + yield t("Perform your maintenance operations.", array()); + yield "
  6. +
  7. "; + // line 19 + yield t("In the Manage administrative menu, navigate to Configuration > Development > @maintenance_link.", array("@maintenance_link" => ($context["maintenance_link"] ?? null), )); + yield "
  8. +
  9. "; + // line 20 + yield t("Uncheck Put site into maintenance mode and click Save configuration. Your site will be back in normal operation mode.", array()); + yield "
  10. +
  11. "; + // line 21 + yield t("Clear the site cache. See @cache_topic for instructions.", array("@cache_topic" => ($context["cache_topic"] ?? null), )); + yield "
  12. +
"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/system.maintenance_mode.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 95 => 21, 91 => 20, 87 => 19, 83 => 18, 79 => 17, 75 => 16, 70 => 14, 66 => 13, 62 => 12, 58 => 11, 53 => 10, 51 => 9, 46 => 8, 44 => 7,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/system.maintenance_mode.html.twig", "/var/www/html/arduino_10/core/modules/system/help_topics/system.maintenance_mode.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 7, "trans" => 8); + static $filters = array("escape" => 16); + static $functions = array("render_var" => 7, "help_topic_link" => 7, "help_route_link" => 9); + + try { + $this->sandbox->checkSecurity( + ['set', 'trans'], + ['escape'], + ['render_var', 'help_topic_link', 'help_route_link'], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_system.module_uninstall.h_ww4xjp69NyvQFRBWVAuiSrvTF/.htaccess b/sites/default/files/php/twig/67188e7262e38_system.module_uninstall.h_ww4xjp69NyvQFRBWVAuiSrvTF/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_system.module_uninstall.h_ww4xjp69NyvQFRBWVAuiSrvTF/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_system.module_uninstall.h_ww4xjp69NyvQFRBWVAuiSrvTF/rxj3dUguevULIlHM3kP95jdcHWcOXrgdFkI1jnIllYo.php b/sites/default/files/php/twig/67188e7262e38_system.module_uninstall.h_ww4xjp69NyvQFRBWVAuiSrvTF/rxj3dUguevULIlHM3kP95jdcHWcOXrgdFkI1jnIllYo.php new file mode 100644 index 0000000..7fc9d9e --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_system.module_uninstall.h_ww4xjp69NyvQFRBWVAuiSrvTF/rxj3dUguevULIlHM3kP95jdcHWcOXrgdFkI1jnIllYo.php @@ -0,0 +1,150 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 8 + $context["uninstall_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + yield t("Uninstall", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 9 + $context["uninstall_link"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["uninstall_link_text"] ?? null), 9, $this->source), "system.modules_uninstall")); + // line 10 + $context["maintenance_topic"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getTopicLink("system.maintenance_mode")); + // line 11 + yield "

"; + yield t("Goal", array()); + yield "

+

"; + // line 12 + yield t("Uninstall a module. Your site should be in maintenance mode when you uninstall modules. See @maintenance_topic for details.", array("@maintenance_topic" => ($context["maintenance_topic"] ?? null), )); + yield "

+

"; + // line 13 + yield t("Steps", array()); + yield "

+
    +
  1. "; + // line 15 + yield t("In the Manage administrative menu, navigate to Extend > @uninstall_link.", array("@uninstall_link" => ($context["uninstall_link"] ?? null), )); + yield "
  2. +
  3. "; + // line 16 + yield t("Enter a word from the module name or description into the filter box, to make the list of modules smaller. Locate the module you want to uninstall.", array()); + yield "
  4. +
  5. "; + // line 17 + yield t("In the Description column, see if there are reasons that this module cannot be uninstalled. For example, you may have created content using this module (which you would need to delete first), or there may be another module installed that requires this module to be installed (you would need to uninstall the other module first).", array()); + yield "
  6. +
  7. "; + // line 18 + yield t("If there are no reasons listed, the module can be uninstalled. Check the box in the Uninstall column, next to the module's name.", array()); + yield "
  8. +
  9. "; + // line 19 + yield t("Click Uninstall at the bottom of the page. Verify the list of modules to be uninstalled and configuration to be deleted on the confirmation page, and click Uninstall.", array()); + yield "
  10. +
  11. "; + // line 20 + yield t("Wait for the module to be uninstalled. You should be returned to the Uninstall page with a message saying the module was uninstalled.", array()); + yield "
  12. +
"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/system.module_uninstall.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 87 => 20, 83 => 19, 79 => 18, 75 => 17, 71 => 16, 67 => 15, 62 => 13, 58 => 12, 53 => 11, 51 => 10, 49 => 9, 44 => 8,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/system.module_uninstall.html.twig", "/var/www/html/arduino_10/core/modules/system/help_topics/system.module_uninstall.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 8, "trans" => 8); + static $filters = array("escape" => 12); + static $functions = array("render_var" => 9, "help_route_link" => 9, "help_topic_link" => 10); + + try { + $this->sandbox->checkSecurity( + ['set', 'trans'], + ['escape'], + ['render_var', 'help_route_link', 'help_topic_link'], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_system.theme_install.html_QJhHLKkOMQw4n4iaBvxLAiqKz/.htaccess b/sites/default/files/php/twig/67188e7262e38_system.theme_install.html_QJhHLKkOMQw4n4iaBvxLAiqKz/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_system.theme_install.html_QJhHLKkOMQw4n4iaBvxLAiqKz/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_system.theme_install.html_QJhHLKkOMQw4n4iaBvxLAiqKz/F2sYkR0hoLKBzNGCgyIaZZ5q4HXpdIcw_SKQb6sIrlc.php b/sites/default/files/php/twig/67188e7262e38_system.theme_install.html_QJhHLKkOMQw4n4iaBvxLAiqKz/F2sYkR0hoLKBzNGCgyIaZZ5q4HXpdIcw_SKQb6sIrlc.php new file mode 100644 index 0000000..3dfe2f7 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_system.theme_install.html_QJhHLKkOMQw4n4iaBvxLAiqKz/F2sYkR0hoLKBzNGCgyIaZZ5q4HXpdIcw_SKQb6sIrlc.php @@ -0,0 +1,148 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 7 + $context["themes_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + yield t("Appearance", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 8 + $context["themes_link"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["themes_link_text"] ?? null), 8, $this->source), "system.themes_page")); + // line 9 + yield "

"; + yield t("Goal", array()); + yield "

+

"; + // line 10 + yield t("Install a core theme, or a contributed theme that has already been downloaded. Choose the default themes to use for the site and for administrative pages.", array()); + yield "

+

"; + // line 11 + yield t("Steps", array()); + yield "

+
    +
  1. "; + // line 13 + yield t("In the Manage administrative menu, navigate to @themes_link.", array("@themes_link" => ($context["themes_link"] ?? null), )); + yield "
  2. +
  3. "; + // line 14 + yield t("Locate the themes that you want to use as the site default theme and for administrative pages.", array()); + yield "
  4. +
  5. "; + // line 15 + yield t("For each of these themes, if the theme is in the Uninstalled themes section, click the Install link to install the theme. Wait for the theme to be installed (translations might be downloaded). You should be returned to the Appearance page.", array()); + yield "
  6. +
  7. "; + // line 16 + yield t("Locate the theme that you want to be your default theme, which should now be in the Installed themes section. If it is not already labeled as the default theme, click the Set as default link.", array()); + yield "
  8. +
  9. "; + // line 17 + yield t("At the bottom of the page, select the Administration theme that you want to use on administrative pages. Click Save configuration if you selected a new theme.", array()); + yield "
  10. +
  11. "; + // line 18 + yield t("If you changed the default theme for your site, visit the site home page or another page on the non-administration part of your site and verify that the site is using the new theme. If you changed the administration theme, verify that the new theme is used on administrative pages.", array()); + yield "
  12. +
"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/system.theme_install.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 85 => 18, 81 => 17, 77 => 16, 73 => 15, 69 => 14, 65 => 13, 60 => 11, 56 => 10, 51 => 9, 49 => 8, 44 => 7,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/system.theme_install.html.twig", "/var/www/html/arduino_10/core/modules/system/help_topics/system.theme_install.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 7, "trans" => 7); + static $filters = array("escape" => 13); + static $functions = array("render_var" => 8, "help_route_link" => 8); + + try { + $this->sandbox->checkSecurity( + ['set', 'trans'], + ['escape'], + ['render_var', 'help_route_link'], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_table.html.twig_2lV6engeqzk51Z7bSsHkuW-S2/.htaccess b/sites/default/files/php/twig/67188e7262e38_table.html.twig_2lV6engeqzk51Z7bSsHkuW-S2/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_table.html.twig_2lV6engeqzk51Z7bSsHkuW-S2/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_table.html.twig_2lV6engeqzk51Z7bSsHkuW-S2/OugG4kvXyEQYoJy-Fl--PVfipbsrWATtCJrMyeNdfiY.php b/sites/default/files/php/twig/67188e7262e38_table.html.twig_2lV6engeqzk51Z7bSsHkuW-S2/OugG4kvXyEQYoJy-Fl--PVfipbsrWATtCJrMyeNdfiY.php new file mode 100644 index 0000000..9dbd43f --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_table.html.twig_2lV6engeqzk51Z7bSsHkuW-S2/OugG4kvXyEQYoJy-Fl--PVfipbsrWATtCJrMyeNdfiY.php @@ -0,0 +1,337 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 42 + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["attributes"] ?? null), 42, $this->source), "html", null, true); + yield "> + "; + // line 43 + if (($context["caption"] ?? null)) { + // line 44 + yield " "; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["caption"] ?? null), 44, $this->source), "html", null, true); + yield " + "; + } + // line 46 + yield " + "; + // line 47 + $context['_parent'] = $context; + $context['_seq'] = CoreExtension::ensureTraversable(($context["colgroups"] ?? null)); + foreach ($context['_seq'] as $context["_key"] => $context["colgroup"]) { + // line 48 + yield " "; + if (CoreExtension::getAttribute($this->env, $this->source, $context["colgroup"], "cols", [], "any", false, false, true, 48)) { + // line 49 + yield " extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["colgroup"], "attributes", [], "any", false, false, true, 49), 49, $this->source), "html", null, true); + yield "> + "; + // line 50 + $context['_parent'] = $context; + $context['_seq'] = CoreExtension::ensureTraversable(CoreExtension::getAttribute($this->env, $this->source, $context["colgroup"], "cols", [], "any", false, false, true, 50)); + foreach ($context['_seq'] as $context["_key"] => $context["col"]) { + // line 51 + yield " extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["col"], "attributes", [], "any", false, false, true, 51), 51, $this->source), "html", null, true); + yield " /> + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_key'], $context['col'], $context['_parent']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 53 + yield " + "; + } else { + // line 55 + yield " extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["colgroup"], "attributes", [], "any", false, false, true, 55), 55, $this->source), "html", null, true); + yield " /> + "; + } + // line 57 + yield " "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_key'], $context['colgroup'], $context['_parent']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 58 + yield " + "; + // line 59 + if (($context["header"] ?? null)) { + // line 60 + yield " + + "; + // line 62 + $context['_parent'] = $context; + $context['_seq'] = CoreExtension::ensureTraversable(($context["header"] ?? null)); + foreach ($context['_seq'] as $context["_key"] => $context["cell"]) { + // line 63 + yield " "; + // line 64 + $context["cell_classes"] = [((CoreExtension::getAttribute($this->env, $this->source, // line 65 +$context["cell"], "active_table_sort", [], "any", false, false, true, 65)) ? ("is-active") : (""))]; + // line 68 + yield " <"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["cell"], "tag", [], "any", false, false, true, 68), 68, $this->source), "html", null, true); + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["cell"], "attributes", [], "any", false, false, true, 68), "addClass", [($context["cell_classes"] ?? null)], "method", false, false, true, 68), 68, $this->source), "html", null, true); + yield ">"; + // line 69 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["cell"], "content", [], "any", false, false, true, 69), 69, $this->source), "html", null, true); + // line 70 + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["cell"], "tag", [], "any", false, false, true, 70), 70, $this->source), "html", null, true); + yield "> + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_key'], $context['cell'], $context['_parent']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 72 + yield " + + "; + } + // line 75 + yield " + "; + // line 76 + if (($context["rows"] ?? null)) { + // line 77 + yield " + "; + // line 78 + $context['_parent'] = $context; + $context['_seq'] = CoreExtension::ensureTraversable(($context["rows"] ?? null)); + $context['loop'] = [ + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ]; + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["row"]) { + // line 79 + yield " "; + // line 80 + $context["row_classes"] = [(( ! // line 81 +($context["no_striping"] ?? null)) ? (Twig\Extension\CoreExtension::cycle(["odd", "even"], $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index0", [], "any", false, false, true, 81), 81, $this->source))) : (""))]; + // line 84 + yield " extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["row"], "attributes", [], "any", false, false, true, 84), "addClass", [($context["row_classes"] ?? null)], "method", false, false, true, 84), 84, $this->source), "html", null, true); + yield "> + "; + // line 85 + $context['_parent'] = $context; + $context['_seq'] = CoreExtension::ensureTraversable(CoreExtension::getAttribute($this->env, $this->source, $context["row"], "cells", [], "any", false, false, true, 85)); + foreach ($context['_seq'] as $context["_key"] => $context["cell"]) { + // line 86 + yield " <"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["cell"], "tag", [], "any", false, false, true, 86), 86, $this->source), "html", null, true); + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["cell"], "attributes", [], "any", false, false, true, 86), 86, $this->source), "html", null, true); + yield ">"; + // line 87 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["cell"], "content", [], "any", false, false, true, 87), 87, $this->source), "html", null, true); + // line 88 + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["cell"], "tag", [], "any", false, false, true, 88), 88, $this->source), "html", null, true); + yield "> + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_key'], $context['cell'], $context['_parent']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 90 + yield " + "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['revindex0'], $context['loop']['revindex'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_key'], $context['row'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 92 + yield " + "; + } elseif ( // line 93 +($context["empty"] ?? null)) { + // line 94 + yield " + + extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["header_columns"] ?? null), 96, $this->source), "html", null, true); + yield "\" class=\"empty message\">"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["empty"] ?? null), 96, $this->source), "html", null, true); + yield " + + + "; + } + // line 100 + yield " "; + if (($context["footer"] ?? null)) { + // line 101 + yield " + "; + // line 102 + $context['_parent'] = $context; + $context['_seq'] = CoreExtension::ensureTraversable(($context["footer"] ?? null)); + foreach ($context['_seq'] as $context["_key"] => $context["row"]) { + // line 103 + yield " extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["row"], "attributes", [], "any", false, false, true, 103), 103, $this->source), "html", null, true); + yield "> + "; + // line 104 + $context['_parent'] = $context; + $context['_seq'] = CoreExtension::ensureTraversable(CoreExtension::getAttribute($this->env, $this->source, $context["row"], "cells", [], "any", false, false, true, 104)); + foreach ($context['_seq'] as $context["_key"] => $context["cell"]) { + // line 105 + yield " <"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["cell"], "tag", [], "any", false, false, true, 105), 105, $this->source), "html", null, true); + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["cell"], "attributes", [], "any", false, false, true, 105), 105, $this->source), "html", null, true); + yield ">"; + // line 106 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["cell"], "content", [], "any", false, false, true, 106), 106, $this->source), "html", null, true); + // line 107 + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["cell"], "tag", [], "any", false, false, true, 107), 107, $this->source), "html", null, true); + yield "> + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_key'], $context['cell'], $context['_parent']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 109 + yield " + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_key'], $context['row'], $context['_parent']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 111 + yield " + "; + } + // line 113 + yield " +"; + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["attributes", "caption", "colgroups", "header", "rows", "no_striping", "loop", "empty", "header_columns", "footer"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "themes/contrib/seven/templates/classy/dataset/table.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 274 => 113, 270 => 111, 263 => 109, 254 => 107, 252 => 106, 247 => 105, 243 => 104, 238 => 103, 234 => 102, 231 => 101, 228 => 100, 219 => 96, 215 => 94, 213 => 93, 210 => 92, 195 => 90, 186 => 88, 184 => 87, 179 => 86, 175 => 85, 170 => 84, 168 => 81, 167 => 80, 165 => 79, 148 => 78, 145 => 77, 143 => 76, 140 => 75, 135 => 72, 126 => 70, 124 => 69, 119 => 68, 117 => 65, 116 => 64, 114 => 63, 110 => 62, 106 => 60, 104 => 59, 101 => 58, 95 => 57, 89 => 55, 85 => 53, 76 => 51, 72 => 50, 67 => 49, 64 => 48, 60 => 47, 57 => 46, 51 => 44, 49 => 43, 44 => 42,); + } + + public function getSourceContext(): Source + { + return new Source("", "themes/contrib/seven/templates/classy/dataset/table.html.twig", "/var/www/html/arduino_10/themes/contrib/seven/templates/classy/dataset/table.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("if" => 43, "for" => 47, "set" => 64); + static $filters = array("escape" => 42); + static $functions = array("cycle" => 81); + + try { + $this->sandbox->checkSecurity( + ['if', 'for', 'set'], + ['escape'], + ['cycle'], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_textarea.html.twig_Sxe527T0W5a47Q_3S6F5ajWsw/.htaccess b/sites/default/files/php/twig/67188e7262e38_textarea.html.twig_Sxe527T0W5a47Q_3S6F5ajWsw/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_textarea.html.twig_Sxe527T0W5a47Q_3S6F5ajWsw/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_textarea.html.twig_Sxe527T0W5a47Q_3S6F5ajWsw/vOpZ6o_zVWvOBFymCPz-t1kpMAKi4rR3oQ_ik1u_Yvk.php b/sites/default/files/php/twig/67188e7262e38_textarea.html.twig_Sxe527T0W5a47Q_3S6F5ajWsw/vOpZ6o_zVWvOBFymCPz-t1kpMAKi4rR3oQ_ik1u_Yvk.php new file mode 100644 index 0000000..d3a1d7d --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_textarea.html.twig_Sxe527T0W5a47Q_3S6F5ajWsw/vOpZ6o_zVWvOBFymCPz-t1kpMAKi4rR3oQ_ik1u_Yvk.php @@ -0,0 +1,120 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 17 + $context["classes"] = ["form-textarea", (( // line 19 +($context["resizable"] ?? null)) ? (("resize-" . $this->sandbox->ensureToStringAllowed(($context["resizable"] ?? null), 19, $this->source))) : ("")), (( // line 20 +($context["required"] ?? null)) ? ("required") : (""))]; + // line 23 + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, ($context["wrapper_attributes"] ?? null), "addClass", ["form-textarea-wrapper"], "method", false, false, true, 23), 23, $this->source), "html", null, true); + yield "> + extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, ($context["attributes"] ?? null), "addClass", [($context["classes"] ?? null)], "method", false, false, true, 24), 24, $this->source), "html", null, true); + yield ">"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["value"] ?? null), 24, $this->source), "html", null, true); + yield " +
+"; + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["resizable", "required", "wrapper_attributes", "attributes", "value"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "themes/contrib/seven/templates/classy/form/textarea.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 53 => 24, 48 => 23, 46 => 20, 45 => 19, 44 => 17,); + } + + public function getSourceContext(): Source + { + return new Source("", "themes/contrib/seven/templates/classy/form/textarea.html.twig", "/var/www/html/arduino_10/themes/contrib/seven/templates/classy/form/textarea.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 17); + static $filters = array("escape" => 23); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + ['set'], + ['escape'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_time.html.twig_-KL3eNJpw2R12ZjvBS3alV6f2/.htaccess b/sites/default/files/php/twig/67188e7262e38_time.html.twig_-KL3eNJpw2R12ZjvBS3alV6f2/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_time.html.twig_-KL3eNJpw2R12ZjvBS3alV6f2/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_time.html.twig_-KL3eNJpw2R12ZjvBS3alV6f2/X5MWXPoGHAoq43_oAgTy8lzbl-z-VBlEwDUsmTaPf48.php b/sites/default/files/php/twig/67188e7262e38_time.html.twig_-KL3eNJpw2R12ZjvBS3alV6f2/X5MWXPoGHAoq43_oAgTy8lzbl-z-VBlEwDUsmTaPf48.php new file mode 100644 index 0000000..5941229 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_time.html.twig_-KL3eNJpw2R12ZjvBS3alV6f2/X5MWXPoGHAoq43_oAgTy8lzbl-z-VBlEwDUsmTaPf48.php @@ -0,0 +1,111 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 22 + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["attributes"] ?? null), 22, $this->source), "html", null, true); + yield ">"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["text"] ?? null), 22, $this->source), "html", null, true); + yield " +"; + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["attributes", "text"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "core/modules/system/templates/time.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 44 => 22,); + } + + public function getSourceContext(): Source + { + return new Source("", "core/modules/system/templates/time.html.twig", "/var/www/html/arduino_10/core/modules/system/templates/time.html.twig"); + } + + public function checkSecurity() + { + static $tags = array(); + static $filters = array("escape" => 22); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + [], + ['escape'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_toolbar.html.twig_8SlqzibJ7qXx9F16lukHeHA6x/.htaccess b/sites/default/files/php/twig/67188e7262e38_toolbar.html.twig_8SlqzibJ7qXx9F16lukHeHA6x/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_toolbar.html.twig_8SlqzibJ7qXx9F16lukHeHA6x/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_toolbar.html.twig_8SlqzibJ7qXx9F16lukHeHA6x/w5wtlZrOK2MYqdgmxHUIIaCDzaAac1psFQxDlzLC6Wc.php b/sites/default/files/php/twig/67188e7262e38_toolbar.html.twig_8SlqzibJ7qXx9F16lukHeHA6x/w5wtlZrOK2MYqdgmxHUIIaCDzaAac1psFQxDlzLC6Wc.php new file mode 100644 index 0000000..4085f16 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_toolbar.html.twig_8SlqzibJ7qXx9F16lukHeHA6x/w5wtlZrOK2MYqdgmxHUIIaCDzaAac1psFQxDlzLC6Wc.php @@ -0,0 +1,182 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 23 + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, ($context["attributes"] ?? null), "addClass", ["toolbar"], "method", false, false, true, 23), 23, $this->source), "html", null, true); + yield "> + extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, ($context["toolbar_attributes"] ?? null), "addClass", ["toolbar-bar", "clearfix"], "method", false, false, true, 24), 24, $this->source), "html", null, true); + yield "> +

"; + // line 25 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["toolbar_heading"] ?? null), 25, $this->source), "html", null, true); + yield "

+ "; + // line 26 + $context['_parent'] = $context; + $context['_seq'] = CoreExtension::ensureTraversable(($context["tabs"] ?? null)); + foreach ($context['_seq'] as $context["key"] => $context["tab"]) { + // line 27 + yield " "; + $context["tray"] = (($__internal_compile_0 = ($context["trays"] ?? null)) && is_array($__internal_compile_0) || $__internal_compile_0 instanceof ArrayAccess ? ($__internal_compile_0[$context["key"]] ?? null) : null); + // line 28 + yield " extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["tab"], "attributes", [], "any", false, false, true, 28), "addClass", ["toolbar-tab"], "method", false, false, true, 28), 28, $this->source), "html", null, true); + yield "> + "; + // line 29 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["tab"], "link", [], "any", false, false, true, 29), 29, $this->source), "html", null, true); + yield " + "; + // line 30 + $___internal_parse_0_ = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + // line 31 + yield " extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, ($context["tray"] ?? null), "attributes", [], "any", false, false, true, 31), 31, $this->source), "html", null, true); + yield "> + "; + // line 32 + if (CoreExtension::getAttribute($this->env, $this->source, ($context["tray"] ?? null), "label", [], "any", false, false, true, 32)) { + // line 33 + yield " + "; + // line 45 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["remainder"] ?? null), 45, $this->source), "html", null, true); + yield " + +"; + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["attributes", "toolbar_attributes", "toolbar_heading", "tabs", "trays", "remainder"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "themes/contrib/seven/templates/classy/navigation/toolbar.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 117 => 45, 114 => 44, 107 => 42, 105 => 30, 96 => 38, 92 => 36, 87 => 34, 82 => 33, 80 => 32, 75 => 31, 73 => 30, 69 => 29, 64 => 28, 61 => 27, 57 => 26, 53 => 25, 49 => 24, 44 => 23,); + } + + public function getSourceContext(): Source + { + return new Source("", "themes/contrib/seven/templates/classy/navigation/toolbar.html.twig", "/var/www/html/arduino_10/themes/contrib/seven/templates/classy/navigation/toolbar.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("for" => 26, "set" => 27, "apply" => 30, "if" => 32); + static $filters = array("escape" => 23, "spaceless" => 30); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + ['for', 'set', 'apply', 'if'], + ['escape', 'spaceless'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_toolbar.html.twig_RUpyQRWdRvH76bH_7yQG7p3c0/.htaccess b/sites/default/files/php/twig/67188e7262e38_toolbar.html.twig_RUpyQRWdRvH76bH_7yQG7p3c0/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_toolbar.html.twig_RUpyQRWdRvH76bH_7yQG7p3c0/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_toolbar.html.twig_RUpyQRWdRvH76bH_7yQG7p3c0/AGPBg1udEqFXAuqGq9nAFJcoazg-XRp0YKHSIoVd5Lk.php b/sites/default/files/php/twig/67188e7262e38_toolbar.html.twig_RUpyQRWdRvH76bH_7yQG7p3c0/AGPBg1udEqFXAuqGq9nAFJcoazg-XRp0YKHSIoVd5Lk.php new file mode 100644 index 0000000..f8330a4 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_toolbar.html.twig_RUpyQRWdRvH76bH_7yQG7p3c0/AGPBg1udEqFXAuqGq9nAFJcoazg-XRp0YKHSIoVd5Lk.php @@ -0,0 +1,182 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 25 + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, ($context["attributes"] ?? null), "addClass", ["toolbar"], "method", false, false, true, 25), 25, $this->source), "html", null, true); + yield "> + extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, ($context["toolbar_attributes"] ?? null), "addClass", ["toolbar-bar", "clearfix"], "method", false, false, true, 26), 26, $this->source), "html", null, true); + yield "> +

"; + // line 27 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["toolbar_heading"] ?? null), 27, $this->source), "html", null, true); + yield "

+ "; + // line 28 + $context['_parent'] = $context; + $context['_seq'] = CoreExtension::ensureTraversable(($context["tabs"] ?? null)); + foreach ($context['_seq'] as $context["key"] => $context["tab"]) { + // line 29 + yield " "; + $context["tray"] = (($__internal_compile_0 = ($context["trays"] ?? null)) && is_array($__internal_compile_0) || $__internal_compile_0 instanceof ArrayAccess ? ($__internal_compile_0[$context["key"]] ?? null) : null); + // line 30 + yield " extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["tab"], "attributes", [], "any", false, false, true, 30), "addClass", ["toolbar-tab"], "method", false, false, true, 30), 30, $this->source), "html", null, true); + yield "> + "; + // line 31 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["tab"], "link", [], "any", false, false, true, 31), 31, $this->source), "html", null, true); + yield " + "; + // line 32 + $___internal_parse_0_ = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + // line 33 + yield " extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, ($context["tray"] ?? null), "attributes", [], "any", false, false, true, 33), 33, $this->source), "html", null, true); + yield "> + "; + // line 34 + if (CoreExtension::getAttribute($this->env, $this->source, ($context["tray"] ?? null), "label", [], "any", false, false, true, 34)) { + // line 35 + yield " + "; + // line 47 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["remainder"] ?? null), 47, $this->source), "html", null, true); + yield " + +"; + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["attributes", "toolbar_attributes", "toolbar_heading", "tabs", "trays", "remainder"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "core/modules/toolbar/templates/toolbar.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 117 => 47, 114 => 46, 107 => 44, 105 => 32, 96 => 40, 92 => 38, 87 => 36, 82 => 35, 80 => 34, 75 => 33, 73 => 32, 69 => 31, 64 => 30, 61 => 29, 57 => 28, 53 => 27, 49 => 26, 44 => 25,); + } + + public function getSourceContext(): Source + { + return new Source("", "core/modules/toolbar/templates/toolbar.html.twig", "/var/www/html/arduino_10/core/modules/toolbar/templates/toolbar.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("for" => 28, "set" => 29, "apply" => 32, "if" => 34); + static $filters = array("escape" => 25, "spaceless" => 32); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + ['for', 'set', 'apply', 'if'], + ['escape', 'spaceless'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_tour.overview.html.twig_FrwOI5NgI1AGpukXgESgHOGA6/.htaccess b/sites/default/files/php/twig/67188e7262e38_tour.overview.html.twig_FrwOI5NgI1AGpukXgESgHOGA6/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_tour.overview.html.twig_FrwOI5NgI1AGpukXgESgHOGA6/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_tour.overview.html.twig_FrwOI5NgI1AGpukXgESgHOGA6/o4OJNKn5AceLBzOt2XXhnnFpdBnjDYF-Y-W-GoeRVvQ.php b/sites/default/files/php/twig/67188e7262e38_tour.overview.html.twig_FrwOI5NgI1AGpukXgESgHOGA6/o4OJNKn5AceLBzOt2XXhnnFpdBnjDYF-Y-W-GoeRVvQ.php new file mode 100644 index 0000000..bc8858c --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_tour.overview.html.twig_FrwOI5NgI1AGpukXgESgHOGA6/o4OJNKn5AceLBzOt2XXhnnFpdBnjDYF-Y-W-GoeRVvQ.php @@ -0,0 +1,141 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 6 + yield "

"; + yield t("Goal", array()); + yield "

+

"; + // line 7 + yield t("Take a tour of an administrative page.", array()); + yield "

+

"; + // line 8 + yield t("What are tours?", array()); + yield "

+

"; + // line 9 + yield t("The core Tour module provides users with tours, which are guided tours of the administrative interface. Each tour starts on a particular administrative page, and consists of one or more tips that highlight elements of the page, guide you through a workflow, or explain key concepts. Users need Access tour permission to view tours, and JavaScript must be enabled in their browsers.", array()); + yield "

+

"; + // line 10 + yield t("Steps", array()); + yield "

+
    +
  1. "; + // line 12 + yield t("Make sure that the core Tour module is installed, and that you have a role with the Access tour permission. Also, make sure that a toolbar module is installed (either the core Toolbar module or a contributed module replacement).", array()); + yield "
  2. +
  3. "; + // line 13 + yield t("Visit an administrative page that has a tour, such as the edit view page provided by the core Views UI module.", array()); + yield "
  4. +
  5. "; + // line 14 + yield t("Click the Tour button at the right end of the toolbar (left end for right-to-left languages). The first tip of the tour should appear.", array()); + yield "
  6. +
  7. "; + // line 15 + yield t("Click the Next button to advance to the next tip, and End tour at the end to close the tour.", array()); + yield "
  8. +
"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/tour.overview.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 78 => 15, 74 => 14, 70 => 13, 66 => 12, 61 => 10, 57 => 9, 53 => 8, 49 => 7, 44 => 6,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/tour.overview.html.twig", "/var/www/html/arduino_10/core/modules/tour/help_topics/tour.overview.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("trans" => 6); + static $filters = array(); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + ['trans'], + [], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_user.create.html.twig_HV45MnyE42ib7birLxe_Wx1iR/.htaccess b/sites/default/files/php/twig/67188e7262e38_user.create.html.twig_HV45MnyE42ib7birLxe_Wx1iR/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_user.create.html.twig_HV45MnyE42ib7birLxe_Wx1iR/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_user.create.html.twig_HV45MnyE42ib7birLxe_Wx1iR/52dKEon2f7FftDk0ebQK76WAbtKuLk7P7hrP5PTKbf8.php b/sites/default/files/php/twig/67188e7262e38_user.create.html.twig_HV45MnyE42ib7birLxe_Wx1iR/52dKEon2f7FftDk0ebQK76WAbtKuLk7P7hrP5PTKbf8.php new file mode 100644 index 0000000..72cfe53 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_user.create.html.twig_HV45MnyE42ib7birLxe_Wx1iR/52dKEon2f7FftDk0ebQK76WAbtKuLk7P7hrP5PTKbf8.php @@ -0,0 +1,156 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 7 + $context["people_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + yield t("People", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 8 + $context["people_link"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["people_link_text"] ?? null), 8, $this->source), "entity.user.collection")); + // line 9 + yield "

"; + yield t("Goal", array()); + yield "

+

"; + // line 10 + yield t("Create a new user account.", array()); + yield "

+

"; + // line 11 + yield t("Steps", array()); + yield "

+
    +
  1. "; + // line 13 + yield t("In the Manage administrative menu, navigate to @people_link.", array("@people_link" => ($context["people_link"] ?? null), )); + yield "
  2. +
  3. "; + // line 14 + yield t("Click Add user.", array()); + yield "
  4. +
  5. "; + // line 15 + yield t("Enter the Email address, Username, and Password (twice) for the new user.", array()); + yield "
  6. +
  7. "; + // line 16 + yield t("Verify that the Roles checked for the new user are correct.", array()); + yield "
  8. +
  9. "; + // line 17 + yield t("If you want the new user to receive an email message notifying them of the new account, check Notify user of new account.", array()); + yield "
  10. +
  11. "; + // line 18 + yield t("Optionally, change other settings on the form.", array()); + yield "
  12. +
  13. "; + // line 19 + yield t("Click Create new account.", array()); + yield "
  14. +
  15. "; + // line 20 + yield t("You will be left on the Add user page; repeat these steps if you have more user accounts to create.", array()); + yield "
  16. +
"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/user.create.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 93 => 20, 89 => 19, 85 => 18, 81 => 17, 77 => 16, 73 => 15, 69 => 14, 65 => 13, 60 => 11, 56 => 10, 51 => 9, 49 => 8, 44 => 7,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/user.create.html.twig", "/var/www/html/arduino_10/core/modules/user/help_topics/user.create.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 7, "trans" => 7); + static $filters = array("escape" => 13); + static $functions = array("render_var" => 8, "help_route_link" => 8); + + try { + $this->sandbox->checkSecurity( + ['set', 'trans'], + ['escape'], + ['render_var', 'help_route_link'], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_user.new_role.html.twig_jTTPEnKkj-s1H0mewhxi63dCm/.htaccess b/sites/default/files/php/twig/67188e7262e38_user.new_role.html.twig_jTTPEnKkj-s1H0mewhxi63dCm/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_user.new_role.html.twig_jTTPEnKkj-s1H0mewhxi63dCm/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_user.new_role.html.twig_jTTPEnKkj-s1H0mewhxi63dCm/476MXL2x7zQAVNXevTxauHZP9nJX4-txkqzmjK_zSeI.php b/sites/default/files/php/twig/67188e7262e38_user.new_role.html.twig_jTTPEnKkj-s1H0mewhxi63dCm/476MXL2x7zQAVNXevTxauHZP9nJX4-txkqzmjK_zSeI.php new file mode 100644 index 0000000..8c644e6 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_user.new_role.html.twig_jTTPEnKkj-s1H0mewhxi63dCm/476MXL2x7zQAVNXevTxauHZP9nJX4-txkqzmjK_zSeI.php @@ -0,0 +1,140 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 7 + $context["roles_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + yield t("Roles", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 8 + $context["roles_link"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["roles_link_text"] ?? null), 8, $this->source), "entity.user_role.collection")); + // line 9 + yield "

"; + yield t("Goal", array()); + yield "

+

"; + // line 10 + yield t("Create a new role.", array()); + yield "

+

"; + // line 11 + yield t("Steps", array()); + yield "

+
    +
  1. "; + // line 13 + yield t("In the Manage administrative menu, navigate to People > @roles_link.", array("@roles_link" => ($context["roles_link"] ?? null), )); + yield "
  2. +
  3. "; + // line 14 + yield t("Click Add role.", array()); + yield "
  4. +
  5. "; + // line 15 + yield t("Enter the desired Role name. If desired, click Edit to change the Machine name for the role.", array()); + yield "
  6. +
  7. "; + // line 16 + yield t("Click Save. You should be returned to the Roles page and your new role should be in the role list.", array()); + yield "
  8. +
"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/user.new_role.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 77 => 16, 73 => 15, 69 => 14, 65 => 13, 60 => 11, 56 => 10, 51 => 9, 49 => 8, 44 => 7,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/user.new_role.html.twig", "/var/www/html/arduino_10/core/modules/user/help_topics/user.new_role.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 7, "trans" => 7); + static $filters = array("escape" => 13); + static $functions = array("render_var" => 8, "help_route_link" => 8); + + try { + $this->sandbox->checkSecurity( + ['set', 'trans'], + ['escape'], + ['render_var', 'help_route_link'], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_user.overview.html.twig_2PT9d_ifC3eLul396-z5LKrKD/.htaccess b/sites/default/files/php/twig/67188e7262e38_user.overview.html.twig_2PT9d_ifC3eLul396-z5LKrKD/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_user.overview.html.twig_2PT9d_ifC3eLul396-z5LKrKD/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_user.overview.html.twig_2PT9d_ifC3eLul396-z5LKrKD/8dVaiv11Gzs4jvZN_PiLZQACnPVIuE4XXJv8l32YRqU.php b/sites/default/files/php/twig/67188e7262e38_user.overview.html.twig_2PT9d_ifC3eLul396-z5LKrKD/8dVaiv11Gzs4jvZN_PiLZQACnPVIuE4XXJv8l32YRqU.php new file mode 100644 index 0000000..3b42fb5 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_user.overview.html.twig_2PT9d_ifC3eLul396-z5LKrKD/8dVaiv11Gzs4jvZN_PiLZQACnPVIuE4XXJv8l32YRqU.php @@ -0,0 +1,135 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 5 + yield "

"; + yield t("What is a user?", array()); + yield "

+

"; + // line 6 + yield t("A user is anyone accessing or viewing your site. Anonymous users are users who are not logged in, and Authenticated users are users who are logged in.", array()); + yield "

+

"; + // line 7 + yield t("What is a role?", array()); + yield "

+

"; + // line 8 + yield t("Roles are used to group and classify users; each user can be assigned one or more roles. There are also special roles for all anonymous and all authenticated users.", array()); + yield "

+

"; + // line 9 + yield t("What is a permission?", array()); + yield "

+

"; + // line 10 + yield t("Granting a permission to a role allows users who have been assigned that role to perform an action on the site, such as viewing content, editing or creating a particular type of content, administering settings for a particular module, or using a particular function of the site (such as search).", array()); + yield "

+

"; + // line 11 + yield t("Overview of managing user accounts and visitors", array()); + yield "

+

"; + // line 12 + yield t("The core User module allows users to register, log in, and log out, and administrators to manage user roles and permissions. The core Ban module allows administrators to ban certain IP addresses from accessing the site. Depending on which modules you have installed on your site, the related topics below will help you with tasks related to managing user accounts and visitors.", array()); + yield "

"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/user.overview.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 73 => 12, 69 => 11, 65 => 10, 61 => 9, 57 => 8, 53 => 7, 49 => 6, 44 => 5,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/user.overview.html.twig", "/var/www/html/arduino_10/core/modules/user/help_topics/user.overview.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("trans" => 5); + static $filters = array(); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + ['trans'], + [], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_user.permissions.html.twi_t-hmMEmUzo5bHdBr2DAim67ta/.htaccess b/sites/default/files/php/twig/67188e7262e38_user.permissions.html.twi_t-hmMEmUzo5bHdBr2DAim67ta/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_user.permissions.html.twi_t-hmMEmUzo5bHdBr2DAim67ta/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_user.permissions.html.twi_t-hmMEmUzo5bHdBr2DAim67ta/4P36hpekP5M4TMJdFGoSy6niLDvtdsNi5qJD_x8hU_4.php b/sites/default/files/php/twig/67188e7262e38_user.permissions.html.twi_t-hmMEmUzo5bHdBr2DAim67ta/4P36hpekP5M4TMJdFGoSy6niLDvtdsNi5qJD_x8hU_4.php new file mode 100644 index 0000000..2bfba26 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_user.permissions.html.twi_t-hmMEmUzo5bHdBr2DAim67ta/4P36hpekP5M4TMJdFGoSy6niLDvtdsNi5qJD_x8hU_4.php @@ -0,0 +1,136 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 8 + $context["permissions_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + yield t("Permissions", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 9 + $context["permissions_link"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["permissions_link_text"] ?? null), 9, $this->source), "user.admin_permissions")); + // line 10 + yield "

"; + yield t("Goal", array()); + yield "

+

"; + // line 11 + yield t("Modify the permissions for an existing role.", array()); + yield "

+

"; + // line 12 + yield t("Steps", array()); + yield "

+
    +
  1. "; + // line 14 + yield t("In the Manage administrative menu, navigate to People > @permissions_link.", array("@permissions_link" => ($context["permissions_link"] ?? null), )); + yield "
  2. +
  3. "; + // line 15 + yield t("Review the permissions for the role, paying particular attention to the permissions marked with Warning: Give to trusted roles only; this permission has security implications. Uncheck permissions that this role should not have, in the row of the permission and the column of the role; check permissions that this role should have.", array()); + yield "
  4. +
  5. "; + // line 16 + yield t("Click Save permissions.", array()); + yield "
  6. +
"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/user.permissions.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 73 => 16, 69 => 15, 65 => 14, 60 => 12, 56 => 11, 51 => 10, 49 => 9, 44 => 8,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/user.permissions.html.twig", "/var/www/html/arduino_10/core/modules/user/help_topics/user.permissions.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 8, "trans" => 8); + static $filters = array("escape" => 14); + static $functions = array("render_var" => 9, "help_route_link" => 9); + + try { + $this->sandbox->checkSecurity( + ['set', 'trans'], + ['escape'], + ['render_var', 'help_route_link'], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_user.security_account_set_QrKF1hHq5xBzXih0IyfldXCwB/.htaccess b/sites/default/files/php/twig/67188e7262e38_user.security_account_set_QrKF1hHq5xBzXih0IyfldXCwB/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_user.security_account_set_QrKF1hHq5xBzXih0IyfldXCwB/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_user.security_account_set_QrKF1hHq5xBzXih0IyfldXCwB/SlsBj51fPntyhrclzd5HxBf07Owgd8CKUDLvr3a6ZX4.php b/sites/default/files/php/twig/67188e7262e38_user.security_account_set_QrKF1hHq5xBzXih0IyfldXCwB/SlsBj51fPntyhrclzd5HxBf07Owgd8CKUDLvr3a6ZX4.php new file mode 100644 index 0000000..e3b1459 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_user.security_account_set_QrKF1hHq5xBzXih0IyfldXCwB/SlsBj51fPntyhrclzd5HxBf07Owgd8CKUDLvr3a6ZX4.php @@ -0,0 +1,204 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 7 + $context["account_settings_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + yield t("Account settings", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 8 + $context["account_settings_link"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["account_settings_link_text"] ?? null), 8, $this->source), "entity.user.admin_form")); + // line 9 + yield "

"; + yield t("Goal", array()); + yield "

+

"; + // line 10 + yield t("Configure settings related to how user accounts are created and deleted.", array()); + yield "

+

"; + // line 11 + yield t("What are the settings related to user account creation and deletion?", array()); + yield "

+
    +
  • "; + // line 13 + yield t("You can make it possible for new users to register themselves for accounts, with or without email verification or administrative approval. Or, you can make it so only administrators with Administer users permission can register new users.", array()); + yield "
  • +
  • "; + // line 14 + yield t("You can configure what happens to content that a user created, if their account is canceled (deleted).", array()); + yield "
  • +
  • "; + // line 15 + yield t("You can edit the email messages that are sent to users when their accounts are pending, approved, created, blocked, or canceled, or when they request a password reset.", array()); + yield "
  • +
+

"; + // line 17 + yield t("What are variables in email message text?", array()); + yield "

+

"; + // line 18 + yield t("Variables are short text strings, enclosed in square brackets [], that you can insert into configured email message text. When an individual message is generated, data from your site is substituted for the variables. Some commonly-used variables are:", array()); + yield "

+
    +
  • "; + // line 20 + yield t("[site:name]: The name of your website.", array()); + yield "
  • +
  • "; + // line 21 + yield t("[site:url]: The URL of your website.", array()); + yield "
  • +
  • "; + // line 22 + yield t("[site:login-url]: The URL where users can log in to your site.", array()); + yield "
  • +
  • "; + // line 23 + yield t("[user:display-name]: The user's displayed name.", array()); + yield "
  • +
  • "; + // line 24 + yield t("[user:account-name]: The user's account name.", array()); + yield "
  • +
  • "; + // line 25 + yield t("[user:mail]: The user's email alias.", array()); + yield "
  • +
  • "; + // line 26 + yield t("[user:one-time-login-url]: An expiring URL that a user can use to log in once, if they need to reset their password.", array()); + yield "
  • +
+

"; + // line 28 + yield t("Steps", array()); + yield "

+
    +
  1. "; + // line 30 + yield t("In the Manage administrative menu, navigate to Configuration > People > @account_settings_link.", array("@account_settings_link" => ($context["account_settings_link"] ?? null), )); + yield "
  2. +
  3. "; + // line 31 + yield t("Select the method you want to use for creating user accounts, and check or uncheck the box that requires email verification, to match the settings you want for your site.", array()); + yield "
  4. +
  5. "; + // line 32 + yield t("Select the desired option for what happens to content that a user created if their account is canceled.", array()); + yield "
  6. +
  7. "; + // line 33 + yield t("Optionally, edit the text of email messages related to user accounts.", array()); + yield "
  8. +
  9. "; + // line 34 + yield t("Verify that the other settings are correct.", array()); + yield "
  10. +
  11. "; + // line 35 + yield t("Click Save configuration. You should see a message indicating that the settings were saved.", array()); + yield "
  12. +
"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/user.security_account_settings.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 141 => 35, 137 => 34, 133 => 33, 129 => 32, 125 => 31, 121 => 30, 116 => 28, 111 => 26, 107 => 25, 103 => 24, 99 => 23, 95 => 22, 91 => 21, 87 => 20, 82 => 18, 78 => 17, 73 => 15, 69 => 14, 65 => 13, 60 => 11, 56 => 10, 51 => 9, 49 => 8, 44 => 7,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/user.security_account_settings.html.twig", "/var/www/html/arduino_10/core/modules/user/help_topics/user.security_account_settings.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 7, "trans" => 7); + static $filters = array("escape" => 30); + static $functions = array("render_var" => 8, "help_route_link" => 8); + + try { + $this->sandbox->checkSecurity( + ['set', 'trans'], + ['escape'], + ['render_var', 'help_route_link'], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_user.update.html.twig_TbO6PtthPi6bOPohgzW2msMVX/.htaccess b/sites/default/files/php/twig/67188e7262e38_user.update.html.twig_TbO6PtthPi6bOPohgzW2msMVX/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_user.update.html.twig_TbO6PtthPi6bOPohgzW2msMVX/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_user.update.html.twig_TbO6PtthPi6bOPohgzW2msMVX/Znwe9CKbBb3L-ZgP7zCXvRk04Xzv5BHlE4EDIE2MhDE.php b/sites/default/files/php/twig/67188e7262e38_user.update.html.twig_TbO6PtthPi6bOPohgzW2msMVX/Znwe9CKbBb3L-ZgP7zCXvRk04Xzv5BHlE4EDIE2MhDE.php new file mode 100644 index 0000000..748d6b3 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_user.update.html.twig_TbO6PtthPi6bOPohgzW2msMVX/Znwe9CKbBb3L-ZgP7zCXvRk04Xzv5BHlE4EDIE2MhDE.php @@ -0,0 +1,144 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 7 + $context["people_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + yield t("People", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 8 + $context["people_link"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["people_link_text"] ?? null), 8, $this->source), "entity.user.collection")); + // line 9 + yield "

"; + yield t("Goal", array()); + yield "

+

"; + // line 10 + yield t("Update or delete an existing user account.", array()); + yield "

+

"; + // line 11 + yield t("Steps", array()); + yield "

+
    +
  1. "; + // line 13 + yield t("In the Manage administrative menu, navigate to @people_link.", array("@people_link" => ($context["people_link"] ?? null), )); + yield "
  2. +
  3. "; + // line 14 + yield t("Enter all or part of the user name or email address of the user account you want to update or delete, and click Filter. A short list of user accounts, including the account of interest, should be shown in the table; if not, modify the filter text until you can find the account of interest.", array()); + yield "
  4. +
  5. "; + // line 15 + yield t("Click Edit in the Operations area of the account of interest.", array()); + yield "
  6. +
  7. "; + // line 16 + yield t("To delete the user account, scroll to the bottom and click Cancel account. Select what you want to happen to the user's content on the next screen, and click Cancel account.", array()); + yield "
  8. +
  9. "; + // line 17 + yield t("To update the user account, enter new values in the form and click Save.", array()); + yield "
  10. +
"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/user.update.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 81 => 17, 77 => 16, 73 => 15, 69 => 14, 65 => 13, 60 => 11, 56 => 10, 51 => 9, 49 => 8, 44 => 7,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/user.update.html.twig", "/var/www/html/arduino_10/core/modules/user/help_topics/user.update.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 7, "trans" => 7); + static $filters = array("escape" => 13); + static $functions = array("render_var" => 8, "help_route_link" => 8); + + try { + $this->sandbox->checkSecurity( + ['set', 'trans'], + ['escape'], + ['render_var', 'help_route_link'], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_username.html.twig_PRkq2W3Pu88g3HkJqdsyVZXwP/.htaccess b/sites/default/files/php/twig/67188e7262e38_username.html.twig_PRkq2W3Pu88g3HkJqdsyVZXwP/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_username.html.twig_PRkq2W3Pu88g3HkJqdsyVZXwP/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_username.html.twig_PRkq2W3Pu88g3HkJqdsyVZXwP/6w_bD9HGOWa92NgVhSlVT-Rs20VdAHApOLOoKvNWyoo.php b/sites/default/files/php/twig/67188e7262e38_username.html.twig_PRkq2W3Pu88g3HkJqdsyVZXwP/6w_bD9HGOWa92NgVhSlVT-Rs20VdAHApOLOoKvNWyoo.php new file mode 100644 index 0000000..0a58b14 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_username.html.twig_PRkq2W3Pu88g3HkJqdsyVZXwP/6w_bD9HGOWa92NgVhSlVT-Rs20VdAHApOLOoKvNWyoo.php @@ -0,0 +1,122 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 27 + if (($context["link_path"] ?? null)) { + // line 28 + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["attributes"] ?? null), 28, $this->source), "html", null, true); + yield ">"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["name"] ?? null), 28, $this->source), "html", null, true); + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["extra"] ?? null), 28, $this->source), "html", null, true); + yield ""; + } else { + // line 30 + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["attributes"] ?? null), 30, $this->source), "html", null, true); + yield ">"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["name"] ?? null), 30, $this->source), "html", null, true); + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["extra"] ?? null), 30, $this->source), "html", null, true); + yield ""; + } + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["link_path", "attributes", "name", "extra"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "core/modules/user/templates/username.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 54 => 30, 46 => 28, 44 => 27,); + } + + public function getSourceContext(): Source + { + return new Source("", "core/modules/user/templates/username.html.twig", "/var/www/html/arduino_10/core/modules/user/templates/username.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("if" => 27); + static $filters = array("escape" => 28); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + ['if'], + ['escape'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_views-mini-pager.html.twi_IYwuYnv9zLEoWvpzySq6ADJ02/.htaccess b/sites/default/files/php/twig/67188e7262e38_views-mini-pager.html.twi_IYwuYnv9zLEoWvpzySq6ADJ02/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-mini-pager.html.twi_IYwuYnv9zLEoWvpzySq6ADJ02/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_views-mini-pager.html.twi_IYwuYnv9zLEoWvpzySq6ADJ02/CiyvJlln8OFeQ4ADOh9aM_-r8peF7JvfmF-Fb3YYXyw.php b/sites/default/files/php/twig/67188e7262e38_views-mini-pager.html.twi_IYwuYnv9zLEoWvpzySq6ADJ02/CiyvJlln8OFeQ4ADOh9aM_-r8peF7JvfmF-Fb3YYXyw.php new file mode 100644 index 0000000..acceef8 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-mini-pager.html.twi_IYwuYnv9zLEoWvpzySq6ADJ02/CiyvJlln8OFeQ4ADOh9aM_-r8peF7JvfmF-Fb3YYXyw.php @@ -0,0 +1,185 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 13 + if ((CoreExtension::getAttribute($this->env, $this->source, ($context["items"] ?? null), "previous", [], "any", false, false, true, 13) || CoreExtension::getAttribute($this->env, $this->source, ($context["items"] ?? null), "next", [], "any", false, false, true, 13))) { + // line 14 + yield " +"; + } + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["items", "heading_id"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "themes/contrib/seven/templates/classy/views/views-mini-pager.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 120 => 40, 113 => 36, 109 => 35, 101 => 34, 98 => 33, 95 => 32, 91 => 30, 89 => 28, 88 => 27, 85 => 26, 82 => 25, 75 => 21, 71 => 20, 63 => 19, 60 => 18, 58 => 17, 51 => 15, 46 => 14, 44 => 13,); + } + + public function getSourceContext(): Source + { + return new Source("", "themes/contrib/seven/templates/classy/views/views-mini-pager.html.twig", "/var/www/html/arduino_10/themes/contrib/seven/templates/classy/views/views-mini-pager.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("if" => 13, "trans" => 27); + static $filters = array("escape" => 14, "t" => 15, "without" => 19, "default" => 21); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + ['if', 'trans'], + ['escape', 't', 'without', 'default'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_views-ui-container.html.t_Qcg-17xoxeLh5zun1bIMG9Gov/.htaccess b/sites/default/files/php/twig/67188e7262e38_views-ui-container.html.t_Qcg-17xoxeLh5zun1bIMG9Gov/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-ui-container.html.t_Qcg-17xoxeLh5zun1bIMG9Gov/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_views-ui-container.html.t_Qcg-17xoxeLh5zun1bIMG9Gov/RY9QQemItK8xm8E_k0dTaDaqgLtCrQ1yhXSN1qHBQwU.php b/sites/default/files/php/twig/67188e7262e38_views-ui-container.html.t_Qcg-17xoxeLh5zun1bIMG9Gov/RY9QQemItK8xm8E_k0dTaDaqgLtCrQ1yhXSN1qHBQwU.php new file mode 100644 index 0000000..b7a2cd2 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-ui-container.html.t_Qcg-17xoxeLh5zun1bIMG9Gov/RY9QQemItK8xm8E_k0dTaDaqgLtCrQ1yhXSN1qHBQwU.php @@ -0,0 +1,111 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 13 + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["attributes"] ?? null), 13, $this->source), "html", null, true); + yield ">"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["children"] ?? null), 13, $this->source), "html", null, true); + yield " +"; + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["attributes", "children"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "core/modules/views_ui/templates/views-ui-container.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 44 => 13,); + } + + public function getSourceContext(): Source + { + return new Source("", "core/modules/views_ui/templates/views-ui-container.html.twig", "/var/www/html/arduino_10/core/modules/views_ui/templates/views-ui-container.html.twig"); + } + + public function checkSecurity() + { + static $tags = array(); + static $filters = array("escape" => 13); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + [], + ['escape'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_views-ui-display-tab-buck_EDsspj_YS8bkgxIzQxqN6DNZw/.htaccess b/sites/default/files/php/twig/67188e7262e38_views-ui-display-tab-buck_EDsspj_YS8bkgxIzQxqN6DNZw/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-ui-display-tab-buck_EDsspj_YS8bkgxIzQxqN6DNZw/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_views-ui-display-tab-buck_EDsspj_YS8bkgxIzQxqN6DNZw/Apybua1HOlWV2uJHwtVhTsH68MUp24PKPFT5mlwUYmg.php b/sites/default/files/php/twig/67188e7262e38_views-ui-display-tab-buck_EDsspj_YS8bkgxIzQxqN6DNZw/Apybua1HOlWV2uJHwtVhTsH68MUp24PKPFT5mlwUYmg.php new file mode 100644 index 0000000..0369b34 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-ui-display-tab-buck_EDsspj_YS8bkgxIzQxqN6DNZw/Apybua1HOlWV2uJHwtVhTsH68MUp24PKPFT5mlwUYmg.php @@ -0,0 +1,132 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 21 + $context["classes"] = ["views-ui-display-tab-bucket", (( // line 23 +($context["name"] ?? null)) ? (\Drupal\Component\Utility\Html::getClass($this->sandbox->ensureToStringAllowed(($context["name"] ?? null), 23, $this->source))) : ("")), (( // line 24 +($context["overridden"] ?? null)) ? ("overridden") : (""))]; + // line 27 + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, ($context["attributes"] ?? null), "addClass", [($context["classes"] ?? null)], "method", false, false, true, 27), 27, $this->source), "html", null, true); + yield "> + "; + // line 28 + if (($context["title"] ?? null)) { + // line 29 + yield "

"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["title"] ?? null), 29, $this->source), "html", null, true); + yield "

"; + } + // line 31 + yield " "; + if (($context["actions"] ?? null)) { + // line 32 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["actions"] ?? null), 32, $this->source), "html", null, true); + } + // line 34 + yield " "; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["content"] ?? null), 34, $this->source), "html", null, true); + yield " + +"; + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["name", "overridden", "attributes", "title", "actions", "content"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "core/modules/views_ui/templates/views-ui-display-tab-bucket.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 66 => 34, 63 => 32, 60 => 31, 55 => 29, 53 => 28, 48 => 27, 46 => 24, 45 => 23, 44 => 21,); + } + + public function getSourceContext(): Source + { + return new Source("", "core/modules/views_ui/templates/views-ui-display-tab-bucket.html.twig", "/var/www/html/arduino_10/core/modules/views_ui/templates/views-ui-display-tab-bucket.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 21, "if" => 28); + static $filters = array("clean_class" => 23, "escape" => 27); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + ['set', 'if'], + ['clean_class', 'escape'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_views-ui-display-tab-sett_P10DypQoRnxFOufstnX7f5eaC/.htaccess b/sites/default/files/php/twig/67188e7262e38_views-ui-display-tab-sett_P10DypQoRnxFOufstnX7f5eaC/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-ui-display-tab-sett_P10DypQoRnxFOufstnX7f5eaC/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_views-ui-display-tab-sett_P10DypQoRnxFOufstnX7f5eaC/pBlzSnO053C5QiZtbC8td9pU9WmB41C3nP9pEITbIzg.php b/sites/default/files/php/twig/67188e7262e38_views-ui-display-tab-sett_P10DypQoRnxFOufstnX7f5eaC/pBlzSnO053C5QiZtbC8td9pU9WmB41C3nP9pEITbIzg.php new file mode 100644 index 0000000..7de7568 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-ui-display-tab-sett_P10DypQoRnxFOufstnX7f5eaC/pBlzSnO053C5QiZtbC8td9pU9WmB41C3nP9pEITbIzg.php @@ -0,0 +1,132 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 22 + $context["classes"] = ["views-display-setting", "clearfix", "views-ui-display-tab-setting", (( // line 26 +($context["defaulted"] ?? null)) ? ("defaulted") : ("")), (( // line 27 +($context["overridden"] ?? null)) ? ("overridden") : (""))]; + // line 30 + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, ($context["attributes"] ?? null), "addClass", [($context["classes"] ?? null)], "method", false, false, true, 30), 30, $this->source), "html", null, true); + yield "> + "; + // line 31 + if (($context["description"] ?? null)) { + // line 32 + yield ""; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["description"] ?? null), 32, $this->source), "html", null, true); + yield ""; + } + // line 34 + yield " "; + if (($context["settings_links"] ?? null)) { + // line 35 + yield " "; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\Core\Template\TwigExtension']->safeJoin($this->env, $this->sandbox->ensureToStringAllowed(($context["settings_links"] ?? null), 35, $this->source), " | ")); + yield " + "; + } + // line 37 + yield " +"; + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["defaulted", "overridden", "attributes", "description", "settings_links"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "core/modules/views_ui/templates/views-ui-display-tab-setting.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 69 => 37, 63 => 35, 60 => 34, 55 => 32, 53 => 31, 48 => 30, 46 => 27, 45 => 26, 44 => 22,); + } + + public function getSourceContext(): Source + { + return new Source("", "core/modules/views_ui/templates/views-ui-display-tab-setting.html.twig", "/var/www/html/arduino_10/core/modules/views_ui/templates/views-ui-display-tab-setting.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 22, "if" => 31); + static $filters = array("escape" => 30, "safe_join" => 35); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + ['set', 'if'], + ['escape', 'safe_join'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_views-ui-view-displays-li_qxOYlYppbvanjC68iEV2isO1g/.htaccess b/sites/default/files/php/twig/67188e7262e38_views-ui-view-displays-li_qxOYlYppbvanjC68iEV2isO1g/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-ui-view-displays-li_qxOYlYppbvanjC68iEV2isO1g/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_views-ui-view-displays-li_qxOYlYppbvanjC68iEV2isO1g/lbsGqHbr7bQ1StqkQDbR7-hYKy-2O44IeKMn2gJ8SEo.php b/sites/default/files/php/twig/67188e7262e38_views-ui-view-displays-li_qxOYlYppbvanjC68iEV2isO1g/lbsGqHbr7bQ1StqkQDbR7-hYKy-2O44IeKMn2gJ8SEo.php new file mode 100644 index 0000000..1da5037 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-ui-view-displays-li_qxOYlYppbvanjC68iEV2isO1g/lbsGqHbr7bQ1StqkQDbR7-hYKy-2O44IeKMn2gJ8SEo.php @@ -0,0 +1,140 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 14 + yield "
    + "; + // line 15 + $context['_parent'] = $context; + $context['_seq'] = CoreExtension::ensureTraversable(($context["displays"] ?? null)); + foreach ($context['_seq'] as $context["_key"] => $context["display"]) { + // line 16 + yield "
  • + "; + // line 17 + if (CoreExtension::getAttribute($this->env, $this->source, $context["display"], "path", [], "any", false, false, true, 17)) { + // line 18 + yield " "; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["display"], "display", [], "any", false, false, true, 18), 18, $this->source), "html", null, true); + yield " ("; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["display"], "path", [], "any", false, false, true, 18), 18, $this->source), "html", null, true); + yield ") + "; + } else { + // line 20 + yield " "; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["display"], "display", [], "any", false, false, true, 20), 20, $this->source), "html", null, true); + yield " + "; + } + // line 22 + yield "
  • + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_key'], $context['display'], $context['_parent']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 24 + yield "
+"; + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["displays"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "core/modules/views_ui/templates/views-ui-view-displays-list.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 77 => 24, 70 => 22, 64 => 20, 56 => 18, 54 => 17, 51 => 16, 47 => 15, 44 => 14,); + } + + public function getSourceContext(): Source + { + return new Source("", "core/modules/views_ui/templates/views-ui-view-displays-list.html.twig", "/var/www/html/arduino_10/core/modules/views_ui/templates/views-ui-view-displays-list.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("for" => 15, "if" => 17); + static $filters = array("escape" => 18); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + ['for', 'if'], + ['escape'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_views-ui-view-preview-sec_BWqhB-5zoPRnbn3vI3RtoVbIb/.htaccess b/sites/default/files/php/twig/67188e7262e38_views-ui-view-preview-sec_BWqhB-5zoPRnbn3vI3RtoVbIb/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-ui-view-preview-sec_BWqhB-5zoPRnbn3vI3RtoVbIb/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_views-ui-view-preview-sec_BWqhB-5zoPRnbn3vI3RtoVbIb/ZQ_S-MjoBfUonNTWAXMr1ugMFEdBOEr5yDy1s3AJ7bk.php b/sites/default/files/php/twig/67188e7262e38_views-ui-view-preview-sec_BWqhB-5zoPRnbn3vI3RtoVbIb/ZQ_S-MjoBfUonNTWAXMr1ugMFEdBOEr5yDy1s3AJ7bk.php new file mode 100644 index 0000000..627bfd3 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-ui-view-preview-sec_BWqhB-5zoPRnbn3vI3RtoVbIb/ZQ_S-MjoBfUonNTWAXMr1ugMFEdBOEr5yDy1s3AJ7bk.php @@ -0,0 +1,122 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 16 + yield "

"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["title"] ?? null), 16, $this->source), "html", null, true); + yield "

+"; + // line 17 + if (($context["links"] ?? null)) { + // line 18 + yield "
"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["links"] ?? null), 18, $this->source), "html", null, true); + yield "
+"; + } + // line 20 + yield "
"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["content"] ?? null), 20, $this->source), "html", null, true); + yield "
+"; + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["title", "links", "content"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "core/modules/views_ui/templates/views-ui-view-preview-section.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 57 => 20, 51 => 18, 49 => 17, 44 => 16,); + } + + public function getSourceContext(): Source + { + return new Source("", "core/modules/views_ui/templates/views-ui-view-preview-section.html.twig", "/var/www/html/arduino_10/core/modules/views_ui/templates/views-ui-view-preview-section.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("if" => 17); + static $filters = array("escape" => 16); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + ['if'], + ['escape'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_views-ui-views-listing-ta_t82ThN6l0_Ol_YwaduNeGj4zN/.htaccess b/sites/default/files/php/twig/67188e7262e38_views-ui-views-listing-ta_t82ThN6l0_Ol_YwaduNeGj4zN/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-ui-views-listing-ta_t82ThN6l0_Ol_YwaduNeGj4zN/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_views-ui-views-listing-ta_t82ThN6l0_Ol_YwaduNeGj4zN/93o2dkX0pn28KFiBPzdfkMvgsRVpsAFrmXg_5N6jLv8.php b/sites/default/files/php/twig/67188e7262e38_views-ui-views-listing-ta_t82ThN6l0_Ol_YwaduNeGj4zN/93o2dkX0pn28KFiBPzdfkMvgsRVpsAFrmXg_5N6jLv8.php new file mode 100644 index 0000000..7a6a731 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-ui-views-listing-ta_t82ThN6l0_Ol_YwaduNeGj4zN/93o2dkX0pn28KFiBPzdfkMvgsRVpsAFrmXg_5N6jLv8.php @@ -0,0 +1,179 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 20 + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, ($context["attributes"] ?? null), "addClass", ["responsive-enabled"], "method", false, false, true, 20), 20, $this->source), "html", null, true); + yield "> + + + "; + // line 23 + $context['_parent'] = $context; + $context['_seq'] = CoreExtension::ensureTraversable(($context["headers"] ?? null)); + foreach ($context['_seq'] as $context["_key"] => $context["header"]) { + // line 24 + yield " extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["header"], "attributes", [], "any", false, false, true, 24), 24, $this->source), "html", null, true); + yield ">"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["header"], "data", [], "any", false, false, true, 24), 24, $this->source), "html", null, true); + yield " + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_key'], $context['header'], $context['_parent']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 26 + yield " + + + "; + // line 29 + $context['_parent'] = $context; + $context['_seq'] = CoreExtension::ensureTraversable(($context["rows"] ?? null)); + foreach ($context['_seq'] as $context["_key"] => $context["row"]) { + // line 30 + yield " extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["row"], "attributes", [], "any", false, false, true, 30), 30, $this->source), "html", null, true); + yield "> + + "; + // line 32 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["row"], "data", [], "any", false, false, true, 32), "view_name", [], "any", false, false, true, 32), "data", [], "any", false, false, true, 32), 32, $this->source), "html", null, true); + yield " + + + "; + // line 35 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["row"], "data", [], "any", false, false, true, 35), "machine_name", [], "any", false, false, true, 35), "data", [], "any", false, false, true, 35), 35, $this->source), "html", null, true); + yield " + + + "; + // line 38 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["row"], "data", [], "any", false, false, true, 38), "description", [], "any", false, false, true, 38), "data", [], "any", false, false, true, 38), 38, $this->source), "html", null, true); + yield " + + + "; + // line 41 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["row"], "data", [], "any", false, false, true, 41), "displays", [], "any", false, false, true, 41), "data", [], "any", false, false, true, 41), 41, $this->source), "html", null, true); + yield " + + + "; + // line 44 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["row"], "data", [], "any", false, false, true, 44), "operations", [], "any", false, false, true, 44), "data", [], "any", false, false, true, 44), 44, $this->source), "html", null, true); + yield " + + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_key'], $context['row'], $context['_parent']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 48 + yield " + +"; + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["attributes", "headers", "rows"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "core/modules/views_ui/templates/views-ui-views-listing-table.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 115 => 48, 105 => 44, 99 => 41, 93 => 38, 87 => 35, 81 => 32, 75 => 30, 71 => 29, 66 => 26, 55 => 24, 51 => 23, 44 => 20,); + } + + public function getSourceContext(): Source + { + return new Source("", "core/modules/views_ui/templates/views-ui-views-listing-table.html.twig", "/var/www/html/arduino_10/core/modules/views_ui/templates/views-ui-views-listing-table.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("for" => 23); + static $filters = array("escape" => 20); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + ['for'], + ['escape'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_views-view-field.html.twi_Q6hS6skBVljcfeB0JRgJAakkO/.htaccess b/sites/default/files/php/twig/67188e7262e38_views-view-field.html.twi_Q6hS6skBVljcfeB0JRgJAakkO/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-view-field.html.twi_Q6hS6skBVljcfeB0JRgJAakkO/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_views-view-field.html.twi_Q6hS6skBVljcfeB0JRgJAakkO/YqRhvs3O1dMDF9ytauKom94kP2mOCdeE0RZXPjlSML0.php b/sites/default/files/php/twig/67188e7262e38_views-view-field.html.twi_Q6hS6skBVljcfeB0JRgJAakkO/YqRhvs3O1dMDF9ytauKom94kP2mOCdeE0RZXPjlSML0.php new file mode 100644 index 0000000..b17bfb0 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-view-field.html.twi_Q6hS6skBVljcfeB0JRgJAakkO/YqRhvs3O1dMDF9ytauKom94kP2mOCdeE0RZXPjlSML0.php @@ -0,0 +1,106 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 23 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["output"] ?? null), 23, $this->source), "html", null, true); + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["output"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "core/modules/views/templates/views-view-field.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 44 => 23,); + } + + public function getSourceContext(): Source + { + return new Source("", "core/modules/views/templates/views-view-field.html.twig", "/var/www/html/arduino_10/core/modules/views/templates/views-view-field.html.twig"); + } + + public function checkSecurity() + { + static $tags = array(); + static $filters = array("escape" => 23); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + [], + ['escape'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_views-view-fields.html.tw_A1XyOIozVur6-mKqAAHU6-Frf/.htaccess b/sites/default/files/php/twig/67188e7262e38_views-view-fields.html.tw_A1XyOIozVur6-mKqAAHU6-Frf/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-view-fields.html.tw_A1XyOIozVur6-mKqAAHU6-Frf/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_views-view-fields.html.tw_A1XyOIozVur6-mKqAAHU6-Frf/V5w40mw4TjrQj9BvdSgTKTlgmKUlbsGu8N_eVlnZNJM.php b/sites/default/files/php/twig/67188e7262e38_views-view-fields.html.tw_A1XyOIozVur6-mKqAAHU6-Frf/V5w40mw4TjrQj9BvdSgTKTlgmKUlbsGu8N_eVlnZNJM.php new file mode 100644 index 0000000..f79649d --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-view-fields.html.tw_A1XyOIozVur6-mKqAAHU6-Frf/V5w40mw4TjrQj9BvdSgTKTlgmKUlbsGu8N_eVlnZNJM.php @@ -0,0 +1,164 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 34 + $context['_parent'] = $context; + $context['_seq'] = CoreExtension::ensureTraversable(($context["fields"] ?? null)); + foreach ($context['_seq'] as $context["_key"] => $context["field"]) { + // line 35 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["field"], "separator", [], "any", false, false, true, 35), 35, $this->source), "html", null, true); + // line 36 + if (CoreExtension::getAttribute($this->env, $this->source, $context["field"], "wrapper_element", [], "any", false, false, true, 36)) { + // line 37 + yield "<"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["field"], "wrapper_element", [], "any", false, false, true, 37), 37, $this->source), "html", null, true); + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["field"], "wrapper_attributes", [], "any", false, false, true, 37), 37, $this->source), "html", null, true); + yield ">"; + } + // line 39 + if (CoreExtension::getAttribute($this->env, $this->source, $context["field"], "label", [], "any", false, false, true, 39)) { + // line 40 + if (CoreExtension::getAttribute($this->env, $this->source, $context["field"], "label_element", [], "any", false, false, true, 40)) { + // line 41 + yield "<"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["field"], "label_element", [], "any", false, false, true, 41), 41, $this->source), "html", null, true); + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["field"], "label_attributes", [], "any", false, false, true, 41), 41, $this->source), "html", null, true); + yield ">"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["field"], "label", [], "any", false, false, true, 41), 41, $this->source), "html", null, true); + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["field"], "label_suffix", [], "any", false, false, true, 41), 41, $this->source), "html", null, true); + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["field"], "label_element", [], "any", false, false, true, 41), 41, $this->source), "html", null, true); + yield ">"; + } else { + // line 43 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["field"], "label", [], "any", false, false, true, 43), 43, $this->source), "html", null, true); + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["field"], "label_suffix", [], "any", false, false, true, 43), 43, $this->source), "html", null, true); + } + } + // line 46 + if (CoreExtension::getAttribute($this->env, $this->source, $context["field"], "element_type", [], "any", false, false, true, 46)) { + // line 47 + yield "<"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["field"], "element_type", [], "any", false, false, true, 47), 47, $this->source), "html", null, true); + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["field"], "element_attributes", [], "any", false, false, true, 47), 47, $this->source), "html", null, true); + yield ">"; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["field"], "content", [], "any", false, false, true, 47), 47, $this->source), "html", null, true); + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["field"], "element_type", [], "any", false, false, true, 47), 47, $this->source), "html", null, true); + yield ">"; + } else { + // line 49 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["field"], "content", [], "any", false, false, true, 49), 49, $this->source), "html", null, true); + } + // line 51 + if (CoreExtension::getAttribute($this->env, $this->source, $context["field"], "wrapper_element", [], "any", false, false, true, 51)) { + // line 52 + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, $context["field"], "wrapper_element", [], "any", false, false, true, 52), 52, $this->source), "html", null, true); + yield ">"; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_key'], $context['field'], $context['_parent']); + $context = array_intersect_key($context, $_parent) + $_parent; + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["fields"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "core/modules/views/templates/views-view-fields.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 95 => 52, 93 => 51, 90 => 49, 80 => 47, 78 => 46, 73 => 43, 62 => 41, 60 => 40, 58 => 39, 52 => 37, 50 => 36, 48 => 35, 44 => 34,); + } + + public function getSourceContext(): Source + { + return new Source("", "core/modules/views/templates/views-view-fields.html.twig", "/var/www/html/arduino_10/core/modules/views/templates/views-view-fields.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("for" => 34, "if" => 36); + static $filters = array("escape" => 35); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + ['for', 'if'], + ['escape'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_views-view.html.twig_Thxc5I1NHtE05jy78cxMbSsE0/.htaccess b/sites/default/files/php/twig/67188e7262e38_views-view.html.twig_Thxc5I1NHtE05jy78cxMbSsE0/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-view.html.twig_Thxc5I1NHtE05jy78cxMbSsE0/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_views-view.html.twig_Thxc5I1NHtE05jy78cxMbSsE0/C0xkwevsk08vFdt-k_srRSACQXZeRd3k8gfhrmaQ7Lc.php b/sites/default/files/php/twig/67188e7262e38_views-view.html.twig_Thxc5I1NHtE05jy78cxMbSsE0/C0xkwevsk08vFdt-k_srRSACQXZeRd3k8gfhrmaQ7Lc.php new file mode 100644 index 0000000..d50b63f --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-view.html.twig_Thxc5I1NHtE05jy78cxMbSsE0/C0xkwevsk08vFdt-k_srRSACQXZeRd3k8gfhrmaQ7Lc.php @@ -0,0 +1,195 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 36 + $context["classes"] = [(( // line 37 +($context["dom_id"] ?? null)) ? (("js-view-dom-id-" . $this->sandbox->ensureToStringAllowed(($context["dom_id"] ?? null), 37, $this->source))) : (""))]; + // line 40 + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, ($context["attributes"] ?? null), "addClass", [($context["classes"] ?? null)], "method", false, false, true, 40), 40, $this->source), "html", null, true); + yield "> + "; + // line 41 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["title_prefix"] ?? null), 41, $this->source), "html", null, true); + yield " + "; + // line 42 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["title"] ?? null), 42, $this->source), "html", null, true); + yield " + "; + // line 43 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["title_suffix"] ?? null), 43, $this->source), "html", null, true); + yield " + + "; + // line 45 + if (($context["header"] ?? null)) { + // line 46 + yield "
+ "; + // line 47 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["header"] ?? null), 47, $this->source), "html", null, true); + yield " +
+ "; + } + // line 50 + yield " + "; + // line 51 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["exposed"] ?? null), 51, $this->source), "html", null, true); + yield " + "; + // line 52 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["attachment_before"] ?? null), 52, $this->source), "html", null, true); + yield " + + "; + // line 54 + if (($context["rows"] ?? null)) { + // line 55 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["rows"] ?? null), 55, $this->source), "html", null, true); + yield " + "; + } elseif ( // line 56 +($context["empty"] ?? null)) { + // line 57 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["empty"] ?? null), 57, $this->source), "html", null, true); + yield " + "; + } + // line 59 + yield " "; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["pager"] ?? null), 59, $this->source), "html", null, true); + yield " + + "; + // line 61 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["attachment_after"] ?? null), 61, $this->source), "html", null, true); + yield " + "; + // line 62 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["more"] ?? null), 62, $this->source), "html", null, true); + yield " + + "; + // line 64 + if (($context["footer"] ?? null)) { + // line 65 + yield "
+ "; + // line 66 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["footer"] ?? null), 66, $this->source), "html", null, true); + yield " +
+ "; + } + // line 69 + yield " + "; + // line 70 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["feed_icons"] ?? null), 70, $this->source), "html", null, true); + yield " + +"; + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["dom_id", "attributes", "title_prefix", "title", "title_suffix", "header", "exposed", "attachment_before", "rows", "empty", "pager", "attachment_after", "more", "footer", "feed_icons"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "core/modules/views/templates/views-view.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 130 => 70, 127 => 69, 121 => 66, 118 => 65, 116 => 64, 111 => 62, 107 => 61, 101 => 59, 96 => 57, 94 => 56, 90 => 55, 88 => 54, 83 => 52, 79 => 51, 76 => 50, 70 => 47, 67 => 46, 65 => 45, 60 => 43, 56 => 42, 52 => 41, 47 => 40, 45 => 37, 44 => 36,); + } + + public function getSourceContext(): Source + { + return new Source("", "core/modules/views/templates/views-view.html.twig", "/var/www/html/arduino_10/core/modules/views/templates/views-view.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 36, "if" => 45); + static $filters = array("escape" => 40); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + ['set', 'if'], + ['escape'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_views-view.html.twig_yD_TNLk_yd4jU-5fxm_rHSx3O/.htaccess b/sites/default/files/php/twig/67188e7262e38_views-view.html.twig_yD_TNLk_yd4jU-5fxm_rHSx3O/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-view.html.twig_yD_TNLk_yd4jU-5fxm_rHSx3O/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_views-view.html.twig_yD_TNLk_yd4jU-5fxm_rHSx3O/iK_cCDw4fOyfCQrhzP2hrqVlBB0y9-O_-MHqf9kLUbg.php b/sites/default/files/php/twig/67188e7262e38_views-view.html.twig_yD_TNLk_yd4jU-5fxm_rHSx3O/iK_cCDw4fOyfCQrhzP2hrqVlBB0y9-O_-MHqf9kLUbg.php new file mode 100644 index 0000000..ec660e2 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views-view.html.twig_yD_TNLk_yd4jU-5fxm_rHSx3O/iK_cCDw4fOyfCQrhzP2hrqVlBB0y9-O_-MHqf9kLUbg.php @@ -0,0 +1,250 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 34 + $context["classes"] = ["view", ("view-" . \Drupal\Component\Utility\Html::getClass($this->sandbox->ensureToStringAllowed( // line 36 +($context["id"] ?? null), 36, $this->source))), ("view-id-" . $this->sandbox->ensureToStringAllowed( // line 37 +($context["id"] ?? null), 37, $this->source)), ("view-display-id-" . $this->sandbox->ensureToStringAllowed( // line 38 +($context["display_id"] ?? null), 38, $this->source)), (( // line 39 +($context["dom_id"] ?? null)) ? (("js-view-dom-id-" . $this->sandbox->ensureToStringAllowed(($context["dom_id"] ?? null), 39, $this->source))) : (""))]; + // line 42 + yield "extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env, $this->source, ($context["attributes"] ?? null), "addClass", [($context["classes"] ?? null)], "method", false, false, true, 42), 42, $this->source), "html", null, true); + yield "> + "; + // line 43 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["title_prefix"] ?? null), 43, $this->source), "html", null, true); + yield " + "; + // line 44 + if (($context["title"] ?? null)) { + // line 45 + yield " "; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["title"] ?? null), 45, $this->source), "html", null, true); + yield " + "; + } + // line 47 + yield " "; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["title_suffix"] ?? null), 47, $this->source), "html", null, true); + yield " + "; + // line 48 + if (($context["header"] ?? null)) { + // line 49 + yield "
+ "; + // line 50 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["header"] ?? null), 50, $this->source), "html", null, true); + yield " +
+ "; + } + // line 53 + yield " "; + if (($context["exposed"] ?? null)) { + // line 54 + yield "
+ "; + // line 55 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["exposed"] ?? null), 55, $this->source), "html", null, true); + yield " +
+ "; + } + // line 58 + yield " "; + if (($context["attachment_before"] ?? null)) { + // line 59 + yield "
+ "; + // line 60 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["attachment_before"] ?? null), 60, $this->source), "html", null, true); + yield " +
+ "; + } + // line 63 + yield " + "; + // line 64 + if (($context["rows"] ?? null)) { + // line 65 + yield "
+ "; + // line 66 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["rows"] ?? null), 66, $this->source), "html", null, true); + yield " +
+ "; + } elseif ( // line 68 +($context["empty"] ?? null)) { + // line 69 + yield "
+ "; + // line 70 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["empty"] ?? null), 70, $this->source), "html", null, true); + yield " +
+ "; + } + // line 73 + yield " + "; + // line 74 + if (($context["pager"] ?? null)) { + // line 75 + yield " "; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["pager"] ?? null), 75, $this->source), "html", null, true); + yield " + "; + } + // line 77 + yield " "; + if (($context["attachment_after"] ?? null)) { + // line 78 + yield "
+ "; + // line 79 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["attachment_after"] ?? null), 79, $this->source), "html", null, true); + yield " +
+ "; + } + // line 82 + yield " "; + if (($context["more"] ?? null)) { + // line 83 + yield " "; + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["more"] ?? null), 83, $this->source), "html", null, true); + yield " + "; + } + // line 85 + yield " "; + if (($context["footer"] ?? null)) { + // line 86 + yield "
+ "; + // line 87 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["footer"] ?? null), 87, $this->source), "html", null, true); + yield " +
+ "; + } + // line 90 + yield " "; + if (($context["feed_icons"] ?? null)) { + // line 91 + yield "
+ "; + // line 92 + yield $this->extensions['Drupal\Core\Template\TwigExtension']->escapeFilter($this->env, $this->sandbox->ensureToStringAllowed(($context["feed_icons"] ?? null), 92, $this->source), "html", null, true); + yield " +
+ "; + } + // line 95 + yield " +"; + $this->env->getExtension('\Drupal\Core\Template\TwigExtension') + ->checkDeprecations($context, ["id", "display_id", "dom_id", "attributes", "title_prefix", "title", "title_suffix", "header", "exposed", "attachment_before", "rows", "empty", "pager", "attachment_after", "more", "footer", "feed_icons"]); yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "themes/contrib/seven/templates/classy/views/views-view.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 187 => 95, 181 => 92, 178 => 91, 175 => 90, 169 => 87, 166 => 86, 163 => 85, 157 => 83, 154 => 82, 148 => 79, 145 => 78, 142 => 77, 136 => 75, 134 => 74, 131 => 73, 125 => 70, 122 => 69, 120 => 68, 115 => 66, 112 => 65, 110 => 64, 107 => 63, 101 => 60, 98 => 59, 95 => 58, 89 => 55, 86 => 54, 83 => 53, 77 => 50, 74 => 49, 72 => 48, 67 => 47, 61 => 45, 59 => 44, 55 => 43, 50 => 42, 48 => 39, 47 => 38, 46 => 37, 45 => 36, 44 => 34,); + } + + public function getSourceContext(): Source + { + return new Source("", "themes/contrib/seven/templates/classy/views/views-view.html.twig", "/var/www/html/arduino_10/themes/contrib/seven/templates/classy/views/views-view.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 34, "if" => 44); + static $filters = array("clean_class" => 36, "escape" => 42); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + ['set', 'if'], + ['clean_class', 'escape'], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_views.overview.html.twig_j67KQAc_5VZmV-Ic8PBYIIuVo/.htaccess b/sites/default/files/php/twig/67188e7262e38_views.overview.html.twig_j67KQAc_5VZmV-Ic8PBYIIuVo/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views.overview.html.twig_j67KQAc_5VZmV-Ic8PBYIIuVo/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_views.overview.html.twig_j67KQAc_5VZmV-Ic8PBYIIuVo/hzd0vd6md_W1oMMyvaYaxl9eaPWsblciyvDcKDnzRZg.php b/sites/default/files/php/twig/67188e7262e38_views.overview.html.twig_j67KQAc_5VZmV-Ic8PBYIIuVo/hzd0vd6md_W1oMMyvaYaxl9eaPWsblciyvDcKDnzRZg.php new file mode 100644 index 0000000..8fc072f --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views.overview.html.twig_j67KQAc_5VZmV-Ic8PBYIIuVo/hzd0vd6md_W1oMMyvaYaxl9eaPWsblciyvDcKDnzRZg.php @@ -0,0 +1,195 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 9 + yield "

"; + yield t("What is a view?", array()); + yield "

+

"; + // line 10 + yield t("A view is a listing of items on your site; for example, a block showing the most recent comments, a page listing news items, or a list of registered users. The listings can be formatted in a table, grid, list, calendar, RSS feed, and other formats (some output formats may require you to install additional contributed modules).", array()); + yield "

+

"; + // line 11 + yield t("What are the components of a view?", array()); + yield "

+

"; + // line 12 + yield t("When you first create a view, you will specify what type of base data is being displayed in the view, which cannot be changed. After choosing a base data type, you can edit the following components, which allow you to specify which data to output, in what order, and in what format:", array()); + yield "

+
    +
  • "; + // line 14 + yield t("Displays: whether the output goes to a page, block, feed, etc.; a single view can have multiple displays, each with different settings.", array()); + yield "
  • +
  • "; + // line 15 + yield t("Format: the output style for each display, such as content item, grid, table, or HTML list.", array()); + yield "
  • +
  • "; + // line 16 + yield t("Fields: if the Format allows, the particular fields to display.", array()); + yield "
  • +
  • "; + // line 17 + yield t("Filter criteria: criteria to limit the data to output, such as whether the content is published, the type of content, etc. Filters can be exposed to let users choose how to filter the data.", array()); + yield "
  • +
  • "; + // line 18 + yield t("Sort criteria: how to order the data. Sorting can also be exposed to users.", array()); + yield "
  • +
  • "; + // line 19 + yield t("Page settings, Block settings, etc.: settings specific to the display type, such as the URL for a page display. Most display types support an Access setting, where you can choose a Permission or Role that a user must have in order to see the view.", array()); + yield "
  • +
  • "; + // line 20 + yield t("Header and Footer: content to display at the top or bottom of the view display.", array()); + yield "
  • +
  • "; + // line 21 + yield t("No results behavior: what to do if the filter criteria result in having no data to display.", array()); + yield "
  • +
  • "; + // line 22 + yield t("Pager: how many items to display, and how to paginate if there are additional items to display.", array()); + yield "
  • +
  • "; + // line 23 + yield t("Advanced > Contextual filters: like regular filters, except the criteria come from the context, such as the current date, page the view is displayed on, etc.", array()); + yield "
  • +
  • "; + // line 24 + yield t("Advanced > Relationships: additional data to pull in and display, related in some way to the base data of the view (such as data about the user who created the content item).", array()); + yield "
  • +
  • "; + // line 25 + yield t("Advanced > Exposed form: if you have exposed filters or sorts, how to display the form to the user.", array()); + yield "
  • +
+

"; + // line 27 + yield t("What are bulk operations?", array()); + yield "

+

"; + // line 28 + yield t("Views using a table display format can include a bulk operations form, which allows users with sufficient permission to select one or more items from the view and apply an administrative action to them. The bulk actions available are specific to the base data type of the view; for example, a view of content items could support bulk publishing and unpublishing actions. If you have the core Actions UI module installed, see the related topic \"Configuring actions\" for more about actions.", array()); + yield "

+

"; + // line 29 + yield t("Managing views overview", array()); + yield "

+

"; + // line 30 + yield t("The core Views module handles the display of views, and the core Views UI module allows you to create, edit, and delete views in the administrative interface. See the related topics listed below for specific tasks (if the Views UI module is installed).", array()); + yield "

+

"; + // line 31 + yield t("Additional resources", array()); + yield "

+"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/views.overview.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 132 => 33, 127 => 31, 123 => 30, 119 => 29, 115 => 28, 111 => 27, 106 => 25, 102 => 24, 98 => 23, 94 => 22, 90 => 21, 86 => 20, 82 => 19, 78 => 18, 74 => 17, 70 => 16, 66 => 15, 62 => 14, 57 => 12, 53 => 11, 49 => 10, 44 => 9,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/views.overview.html.twig", "/var/www/html/arduino_10/core/modules/views/help_topics/views.overview.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("trans" => 9); + static $filters = array(); + static $functions = array(); + + try { + $this->sandbox->checkSecurity( + ['trans'], + [], + [], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_views_ui.add_display.html_xgMdlEpZetNzwWSnBzu5OQO_k/.htaccess b/sites/default/files/php/twig/67188e7262e38_views_ui.add_display.html_xgMdlEpZetNzwWSnBzu5OQO_k/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views_ui.add_display.html_xgMdlEpZetNzwWSnBzu5OQO_k/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_views_ui.add_display.html_xgMdlEpZetNzwWSnBzu5OQO_k/vI6uQBwF79RxSrVbqRZxPsIbhY6FO7rHxiyyPCIwDw4.php b/sites/default/files/php/twig/67188e7262e38_views_ui.add_display.html_xgMdlEpZetNzwWSnBzu5OQO_k/vI6uQBwF79RxSrVbqRZxPsIbhY6FO7rHxiyyPCIwDw4.php new file mode 100644 index 0000000..9db902e --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views_ui.add_display.html_xgMdlEpZetNzwWSnBzu5OQO_k/vI6uQBwF79RxSrVbqRZxPsIbhY6FO7rHxiyyPCIwDw4.php @@ -0,0 +1,146 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 7 + $context["views_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + yield t("Views", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 8 + $context["views_link"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["views_link_text"] ?? null), 8, $this->source), "entity.view.collection")); + // line 9 + $context["view_edit_topic"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getTopicLink("views_ui.edit")); + // line 10 + yield "

"; + yield t("Goal", array()); + yield "

+

"; + // line 11 + yield t("Add a new display to an existing view. This will allow you to display similar data to an existing view, using similar settings, in a new block, page, feed, etc.", array()); + yield "

+

"; + // line 12 + yield t("Steps", array()); + yield "

+
    +
  1. "; + // line 14 + yield t("If you are not already editing your view, in the Manage administrative menu, navigate to Structure > @views_link. Find the view you want to edit, and click its Edit link.", array("@views_link" => ($context["views_link"] ?? null), )); + yield "
  2. +
  3. "; + // line 15 + yield t("Under Displays, click Add.", array()); + yield "
  4. +
  5. "; + // line 16 + yield t("In the pop-up list, click the link for the type of display you want to add; the most common types are Page and Block. The new display will be added to your view, and you will be editing that display.", array()); + yield "
  6. +
  7. "; + // line 17 + yield t("Optionally, click the link next to Display name and enter a new name to be shown for this display in the administrative interface.", array()); + yield "
  8. +
  9. "; + // line 18 + yield t("Follow the steps in @view_edit_topic to edit the other settings for the display.", array("@view_edit_topic" => ($context["view_edit_topic"] ?? null), )); + yield "
  10. +
"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/views_ui.add_display.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 83 => 18, 79 => 17, 75 => 16, 71 => 15, 67 => 14, 62 => 12, 58 => 11, 53 => 10, 51 => 9, 49 => 8, 44 => 7,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/views_ui.add_display.html.twig", "/var/www/html/arduino_10/core/modules/views_ui/help_topics/views_ui.add_display.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 7, "trans" => 7); + static $filters = array("escape" => 14); + static $functions = array("render_var" => 8, "help_route_link" => 8, "help_topic_link" => 9); + + try { + $this->sandbox->checkSecurity( + ['set', 'trans'], + ['escape'], + ['render_var', 'help_route_link', 'help_topic_link'], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_views_ui.bulk_operations._kG8ctvtOcMJ5AVBAanKe1j4Dd/.htaccess b/sites/default/files/php/twig/67188e7262e38_views_ui.bulk_operations._kG8ctvtOcMJ5AVBAanKe1j4Dd/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views_ui.bulk_operations._kG8ctvtOcMJ5AVBAanKe1j4Dd/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_views_ui.bulk_operations._kG8ctvtOcMJ5AVBAanKe1j4Dd/hp5stAglglQpzcVwqU_zhGfTYMg-3Z5Ovt7-hs5_fSs.php b/sites/default/files/php/twig/67188e7262e38_views_ui.bulk_operations._kG8ctvtOcMJ5AVBAanKe1j4Dd/hp5stAglglQpzcVwqU_zhGfTYMg-3Z5Ovt7-hs5_fSs.php new file mode 100644 index 0000000..0e8ed38 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views_ui.bulk_operations._kG8ctvtOcMJ5AVBAanKe1j4Dd/hp5stAglglQpzcVwqU_zhGfTYMg-3Z5Ovt7-hs5_fSs.php @@ -0,0 +1,167 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 8 + $context["views_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + // line 9 + yield " "; + yield t("Views", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 11 + $context["views"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["views_link_text"] ?? null), 11, $this->source), "entity.view.collection")); + // line 12 + $context["views_permissions_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + // line 13 + yield " "; + yield t("Administer views", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 15 + $context["views_permissions"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["views_permissions_link_text"] ?? null), 15, $this->source), "user.admin_permissions.module", ["modules" => "views_ui"])); + // line 16 + yield "

"; + yield t("Goal", array()); + yield "

+

"; + // line 17 + yield t("Add one or more existing actions as bulk operations to an existing table-style view. If you have the core Actions UI module installed, see the related topic \"Configuring actions\" for more information about actions.", array()); + yield "

+

"; + // line 18 + yield t("Who can edit views?", array()); + yield "

+

"; + // line 19 + yield t("The core Views UI module will need to be installed and you will need @views_permissions permission in order to edit a view.", array("@views_permissions" => ($context["views_permissions"] ?? null), )); + yield "

+

"; + // line 20 + yield t("Steps", array()); + yield "

+
    +
  1. "; + // line 22 + yield t("In the Manage administrative menu, navigate to Structure > @views. A list of all views is shown.", array("@views" => ($context["views"] ?? null), )); + yield "
  2. +
  3. "; + // line 23 + yield t("Find the view that you would like to edit, and click Edit from the dropdown button. Note that bulk operations work best in a view with a Page display, and a Table format.", array()); + yield "
  4. +
  5. "; + // line 24 + yield t("If there is not already an Operations bulk form in the Fields list for the view, click Add in the Fields section to add it. (The exact name of the bulk form field will vary, and may contain keywords like \"bulk update\", \"form element\" or \"operations\" -- not to be confused with operations links, which are applied to each item in a row.) If the bulk operations field already exists, click the field name to edit its settings.", array()); + yield "
  6. +
  7. "; + // line 25 + yield t("Check the action(s) you want to make available in the Selected actions list and click Apply (all displays).", array()); + yield "
  8. +
  9. "; + // line 26 + yield t("Verify that the Access settings for the view are at least as restrictive as the permissions necessary to perform the bulk operations. People with permission to see the view, but who don't have permission to do the bulk operations, will experience problems.", array()); + yield "
  10. +
  11. "; + // line 27 + yield t("Click Save. The action(s) will be available as bulk operations in the view.", array()); + yield "
  12. +
"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/views_ui.bulk_operations.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 104 => 27, 100 => 26, 96 => 25, 92 => 24, 88 => 23, 84 => 22, 79 => 20, 75 => 19, 71 => 18, 67 => 17, 62 => 16, 60 => 15, 55 => 13, 53 => 12, 51 => 11, 46 => 9, 44 => 8,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/views_ui.bulk_operations.html.twig", "/var/www/html/arduino_10/core/modules/views_ui/help_topics/views_ui.bulk_operations.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 8, "trans" => 9); + static $filters = array("escape" => 19); + static $functions = array("render_var" => 11, "help_route_link" => 11); + + try { + $this->sandbox->checkSecurity( + ['set', 'trans'], + ['escape'], + ['render_var', 'help_route_link'], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_views_ui.create.html.twig_LTH0kE2Wd_cilbR4YPmOdKaeQ/.htaccess b/sites/default/files/php/twig/67188e7262e38_views_ui.create.html.twig_LTH0kE2Wd_cilbR4YPmOdKaeQ/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views_ui.create.html.twig_LTH0kE2Wd_cilbR4YPmOdKaeQ/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_views_ui.create.html.twig_LTH0kE2Wd_cilbR4YPmOdKaeQ/k4xoG4nQjsalpQ3Z7n7WhTrMx_nqI_TUPKcrxQsKK7Q.php b/sites/default/files/php/twig/67188e7262e38_views_ui.create.html.twig_LTH0kE2Wd_cilbR4YPmOdKaeQ/k4xoG4nQjsalpQ3Z7n7WhTrMx_nqI_TUPKcrxQsKK7Q.php new file mode 100644 index 0000000..096fa8d --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views_ui.create.html.twig_LTH0kE2Wd_cilbR4YPmOdKaeQ/k4xoG4nQjsalpQ3Z7n7WhTrMx_nqI_TUPKcrxQsKK7Q.php @@ -0,0 +1,148 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 8 + $context["views_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + yield t("Views", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 9 + $context["views_link"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["views_link_text"] ?? null), 9, $this->source), "entity.view.collection")); + // line 10 + yield "

"; + yield t("Goal", array()); + yield "

+

"; + // line 11 + yield t("Create a new view to list content or other items on your site.", array()); + yield "

+

"; + // line 12 + yield t("Steps", array()); + yield "

+
    +
  1. "; + // line 14 + yield t("In the Manage administrative menu, navigate to Structure > @views_link.", array("@views_link" => ($context["views_link"] ?? null), )); + yield "
  2. +
  3. "; + // line 15 + yield t("Click Add view.", array()); + yield "
  4. +
  5. "; + // line 16 + yield t("In the View name field, enter a name for the view, which is how it will be listed in the administrative interface.", array()); + yield "
  6. +
  7. "; + // line 17 + yield t("In View settings > Show, select the base data type to display in your view. This cannot be changed later.", array()); + yield "
  8. +
  9. "; + // line 18 + yield t("Optionally, select or enter filtering, sorting, and page/block display settings; these can be added or changed later.", array()); + yield "
  10. +
  11. "; + // line 19 + yield t("Click Save and edit. Your view will be created; edit it following the steps in the related topics below.", array()); + yield "
  12. +
"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/views_ui.create.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 85 => 19, 81 => 18, 77 => 17, 73 => 16, 69 => 15, 65 => 14, 60 => 12, 56 => 11, 51 => 10, 49 => 9, 44 => 8,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/views_ui.create.html.twig", "/var/www/html/arduino_10/core/modules/views_ui/help_topics/views_ui.create.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 8, "trans" => 8); + static $filters = array("escape" => 14); + static $functions = array("render_var" => 9, "help_route_link" => 9); + + try { + $this->sandbox->checkSecurity( + ['set', 'trans'], + ['escape'], + ['render_var', 'help_route_link'], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/php/twig/67188e7262e38_views_ui.edit.html.twig_cvBRjTwV_8xKxsDAXQZNCwNuK/.htaccess b/sites/default/files/php/twig/67188e7262e38_views_ui.edit.html.twig_cvBRjTwV_8xKxsDAXQZNCwNuK/.htaccess new file mode 100644 index 0000000..b0dc540 --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views_ui.edit.html.twig_cvBRjTwV_8xKxsDAXQZNCwNuK/.htaccess @@ -0,0 +1,24 @@ +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + + +# Turn off all options we don't need. +Options -Indexes -ExecCGI -Includes -MultiViews + +# Set the catch-all handler to prevent scripts from being executed. +SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 + + # Override the handler again if we're run later in the evaluation list. + SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 + + +# If we know how to do it safely, disable the PHP engine entirely. + + php_flag engine off + \ No newline at end of file diff --git a/sites/default/files/php/twig/67188e7262e38_views_ui.edit.html.twig_cvBRjTwV_8xKxsDAXQZNCwNuK/CzDiW0DRmSYb7dSdXCp-E0zPjMGQ9gEOr5axlhrvOR4.php b/sites/default/files/php/twig/67188e7262e38_views_ui.edit.html.twig_cvBRjTwV_8xKxsDAXQZNCwNuK/CzDiW0DRmSYb7dSdXCp-E0zPjMGQ9gEOr5axlhrvOR4.php new file mode 100644 index 0000000..28992ea --- /dev/null +++ b/sites/default/files/php/twig/67188e7262e38_views_ui.edit.html.twig_cvBRjTwV_8xKxsDAXQZNCwNuK/CzDiW0DRmSYb7dSdXCp-E0zPjMGQ9gEOr5axlhrvOR4.php @@ -0,0 +1,164 @@ + + */ + private array $macros = []; + + public function __construct(Environment $env) + { + parent::__construct($env); + + $this->source = $this->getSourceContext(); + + $this->parent = false; + + $this->blocks = [ + ]; + $this->sandbox = $this->extensions[SandboxExtension::class]; + $this->checkSecurity(); + } + + protected function doDisplay(array $context, array $blocks = []): iterable + { + $macros = $this->macros; + // line 7 + $context["views_link_text"] = ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) { + yield t("Views", array()); + yield from []; + })())) ? '' : new Markup($tmp, $this->env->getCharset()); + // line 8 + $context["views_link"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getRouteLink($this->sandbox->ensureToStringAllowed(($context["views_link_text"] ?? null), 8, $this->source), "entity.view.collection")); + // line 9 + $context["views_overview_topic"] = $this->extensions['Drupal\Core\Template\TwigExtension']->renderVar($this->extensions['Drupal\help\HelpTwigExtension']->getTopicLink("views.overview")); + // line 10 + yield "

"; + yield t("Goal", array()); + yield "

+

"; + // line 11 + yield t("Edit an existing view display, to modify what data is displayed or how it is displayed.", array()); + yield "

+

"; + // line 12 + yield t("Steps", array()); + yield "

+
    +
  1. "; + // line 14 + yield t("If you are not already editing your view, in the Manage administrative menu, navigate to Structure > @views_link. Find the view you want to edit, and click its Edit link.", array("@views_link" => ($context["views_link"] ?? null), )); + yield "
  2. +
  3. "; + // line 15 + yield t("Under Displays, click the display you want to edit.", array()); + yield "
  4. +
  5. "; + // line 16 + yield t("Find the section whose settings you want to change, such as Format or Filter criteria. (See @views_overview_topic for more information.)", array("@views_overview_topic" => ($context["views_overview_topic"] ?? null), )); + yield "
  6. +
  7. "; + // line 17 + yield t("For sections containing lists (such as Fields and Filter criteria), to modify or delete an existing item, click the name of the item. To add a new item, click Add in the drop-down list. To change the order of items, click Rearrange in the drop-down list.", array()); + yield "
  8. +
  9. "; + // line 18 + yield t("For sections containing individual settings (such as Title and Format), there are often two links for each setting. The first link shows the current value; click that link to change the value. If there is a second link called Settings, click that link to change the settings details. For example, if your Format is currently shown as Unformatted list, click Unformatted list to switch to using a Grid or Table format. Click Settings next to your format type to change the settings for your chosen format.", array()); + yield "
  10. +
  11. "; + // line 19 + yield t("When you have finished changing all the settings, verify that the display is correct by clicking Update preview. Return to editing settings if necessary.", array()); + yield "
  12. +
  13. "; + // line 20 + yield t("When you have verified the display, click Save. Alternatively, if you have made mistakes and want to discard your changes, click Cancel.", array()); + yield "
  14. +
+

"; + // line 22 + yield t("Additional resources", array()); + yield "

+"; + yield from []; + } + + /** + * @codeCoverageIgnore + */ + public function getTemplateName(): string + { + return "@help_topics/views_ui.edit.html.twig"; + } + + /** + * @codeCoverageIgnore + */ + public function isTraitable(): bool + { + return false; + } + + /** + * @codeCoverageIgnore + */ + public function getDebugInfo(): array + { + return array ( 101 => 24, 96 => 22, 91 => 20, 87 => 19, 83 => 18, 79 => 17, 75 => 16, 71 => 15, 67 => 14, 62 => 12, 58 => 11, 53 => 10, 51 => 9, 49 => 8, 44 => 7,); + } + + public function getSourceContext(): Source + { + return new Source("", "@help_topics/views_ui.edit.html.twig", "/var/www/html/arduino_10/core/modules/views_ui/help_topics/views_ui.edit.html.twig"); + } + + public function checkSecurity() + { + static $tags = array("set" => 7, "trans" => 7); + static $filters = array("escape" => 14); + static $functions = array("render_var" => 8, "help_route_link" => 8, "help_topic_link" => 9); + + try { + $this->sandbox->checkSecurity( + ['set', 'trans'], + ['escape'], + ['render_var', 'help_route_link', 'help_topic_link'], + $this->source + ); + } catch (SecurityError $e) { + $e->setSourceContext($this->source); + + if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) { + $e->setTemplateLine($tags[$e->getTagName()]); + } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) { + $e->setTemplateLine($filters[$e->getFilterName()]); + } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) { + $e->setTemplateLine($functions[$e->getFunctionName()]); + } + + throw $e; + } + + } +} diff --git a/sites/default/files/pictures/picture-109-1687687574.jpg b/sites/default/files/pictures/picture-109-1687687574.jpg new file mode 100755 index 0000000..c179337 Binary files /dev/null and b/sites/default/files/pictures/picture-109-1687687574.jpg differ diff --git a/sites/default/files/pictures/picture-117-1695749316.jpg b/sites/default/files/pictures/picture-117-1695749316.jpg new file mode 100755 index 0000000..82e133f Binary files /dev/null and b/sites/default/files/pictures/picture-117-1695749316.jpg differ diff --git a/sites/default/files/pictures/picture-128-1703396741.jpg b/sites/default/files/pictures/picture-128-1703396741.jpg new file mode 100755 index 0000000..9b5e4e2 Binary files /dev/null and b/sites/default/files/pictures/picture-128-1703396741.jpg differ diff --git a/sites/default/files/pictures/picture-129-1702640010.jpg b/sites/default/files/pictures/picture-129-1702640010.jpg new file mode 100755 index 0000000..342270b Binary files /dev/null and b/sites/default/files/pictures/picture-129-1702640010.jpg differ diff --git a/sites/default/files/pictures/picture-147-1719490209.jpg b/sites/default/files/pictures/picture-147-1719490209.jpg new file mode 100755 index 0000000..7c90e6f Binary files /dev/null and b/sites/default/files/pictures/picture-147-1719490209.jpg differ diff --git a/sites/default/files/pictures/picture-29-1619211068.jpg b/sites/default/files/pictures/picture-29-1619211068.jpg new file mode 100755 index 0000000..5bf6c8f Binary files /dev/null and b/sites/default/files/pictures/picture-29-1619211068.jpg differ diff --git a/sites/default/files/pictures/picture-39-1620645703.jpg b/sites/default/files/pictures/picture-39-1620645703.jpg new file mode 100755 index 0000000..ad0e157 Binary files /dev/null and b/sites/default/files/pictures/picture-39-1620645703.jpg differ diff --git a/sites/default/files/pictures/picture-45-1624000299.jpg b/sites/default/files/pictures/picture-45-1624000299.jpg new file mode 100755 index 0000000..4b786b1 Binary files /dev/null and b/sites/default/files/pictures/picture-45-1624000299.jpg differ diff --git a/sites/default/files/pictures/picture-46-1624961678.jpg b/sites/default/files/pictures/picture-46-1624961678.jpg new file mode 100755 index 0000000..f93bf96 Binary files /dev/null and b/sites/default/files/pictures/picture-46-1624961678.jpg differ diff --git a/sites/default/files/pictures/picture-50-1624962784.jpg b/sites/default/files/pictures/picture-50-1624962784.jpg new file mode 100755 index 0000000..cd0b750 Binary files /dev/null and b/sites/default/files/pictures/picture-50-1624962784.jpg differ diff --git a/sites/default/files/pictures/picture-51-1624962503.jpg b/sites/default/files/pictures/picture-51-1624962503.jpg new file mode 100755 index 0000000..f6906c5 Binary files /dev/null and b/sites/default/files/pictures/picture-51-1624962503.jpg differ diff --git a/sites/default/files/pictures/picture-53-1624962885.png b/sites/default/files/pictures/picture-53-1624962885.png new file mode 100755 index 0000000..b5b8f55 Binary files /dev/null and b/sites/default/files/pictures/picture-53-1624962885.png differ diff --git a/sites/default/files/pictures/picture-57-1624969463.jpg b/sites/default/files/pictures/picture-57-1624969463.jpg new file mode 100755 index 0000000..5bd9711 Binary files /dev/null and b/sites/default/files/pictures/picture-57-1624969463.jpg differ diff --git a/sites/default/files/pictures/picture-62-1626780241.jpg b/sites/default/files/pictures/picture-62-1626780241.jpg new file mode 100755 index 0000000..31d80f3 Binary files /dev/null and b/sites/default/files/pictures/picture-62-1626780241.jpg differ diff --git a/sites/default/files/pictures/picture-79-1642760519.jpg b/sites/default/files/pictures/picture-79-1642760519.jpg new file mode 100755 index 0000000..85a5b10 Binary files /dev/null and b/sites/default/files/pictures/picture-79-1642760519.jpg differ diff --git a/sites/default/files/pictures/picture-88-1673355757.jpg b/sites/default/files/pictures/picture-88-1673355757.jpg new file mode 100755 index 0000000..95a05b8 Binary files /dev/null and b/sites/default/files/pictures/picture-88-1673355757.jpg differ diff --git a/sites/default/files/styles/flexslider_full/public/2024-10/slide-image-4.png b/sites/default/files/styles/flexslider_full/public/2024-10/slide-image-4.png new file mode 100755 index 0000000..760f539 Binary files /dev/null and b/sites/default/files/styles/flexslider_full/public/2024-10/slide-image-4.png differ diff --git a/sites/default/files/styles/flexslider_full/public/2024-10/slide-image-5.png b/sites/default/files/styles/flexslider_full/public/2024-10/slide-image-5.png new file mode 100755 index 0000000..57f9351 Binary files /dev/null and b/sites/default/files/styles/flexslider_full/public/2024-10/slide-image-5.png differ diff --git a/sites/default/files/styles/flexslider_full/public/2024-10/slide-image-7.png b/sites/default/files/styles/flexslider_full/public/2024-10/slide-image-7.png new file mode 100755 index 0000000..0f6183f Binary files /dev/null and b/sites/default/files/styles/flexslider_full/public/2024-10/slide-image-7.png differ diff --git a/sites/default/files/styles/homepage_carousel_image/public/2024-10/slide-image-4.png b/sites/default/files/styles/homepage_carousel_image/public/2024-10/slide-image-4.png new file mode 100755 index 0000000..e7c9339 Binary files /dev/null and b/sites/default/files/styles/homepage_carousel_image/public/2024-10/slide-image-4.png differ diff --git a/sites/default/files/styles/homepage_carousel_image/public/2024-10/slide-image-5.png b/sites/default/files/styles/homepage_carousel_image/public/2024-10/slide-image-5.png new file mode 100755 index 0000000..9e324a6 Binary files /dev/null and b/sites/default/files/styles/homepage_carousel_image/public/2024-10/slide-image-5.png differ diff --git a/sites/default/files/styles/homepage_carousel_image/public/2024-10/slide-image-7.png b/sites/default/files/styles/homepage_carousel_image/public/2024-10/slide-image-7.png new file mode 100755 index 0000000..029c425 Binary files /dev/null and b/sites/default/files/styles/homepage_carousel_image/public/2024-10/slide-image-7.png differ diff --git a/sites/default/files/styles/homepage_carousel_image/public/core/modules/image/sample.png b/sites/default/files/styles/homepage_carousel_image/public/core/modules/image/sample.png new file mode 100755 index 0000000..baea6f2 Binary files /dev/null and b/sites/default/files/styles/homepage_carousel_image/public/core/modules/image/sample.png differ diff --git a/sites/default/files/styles/large/public/2024-10/slide-image-4.png b/sites/default/files/styles/large/public/2024-10/slide-image-4.png new file mode 100755 index 0000000..684e302 Binary files /dev/null and b/sites/default/files/styles/large/public/2024-10/slide-image-4.png differ diff --git a/sites/default/files/styles/large/public/2024-10/slide-image-5.png b/sites/default/files/styles/large/public/2024-10/slide-image-5.png new file mode 100755 index 0000000..3b8f7ff Binary files /dev/null and b/sites/default/files/styles/large/public/2024-10/slide-image-5.png differ diff --git a/sites/default/files/styles/large/public/2024-10/slide-image-7.png b/sites/default/files/styles/large/public/2024-10/slide-image-7.png new file mode 100755 index 0000000..6e20efc Binary files /dev/null and b/sites/default/files/styles/large/public/2024-10/slide-image-7.png differ diff --git a/sites/default/files/styles/slick_media/public/2024-10/slide-image-4.png b/sites/default/files/styles/slick_media/public/2024-10/slide-image-4.png new file mode 100755 index 0000000..ba36327 Binary files /dev/null and b/sites/default/files/styles/slick_media/public/2024-10/slide-image-4.png differ diff --git a/sites/default/files/styles/slick_media/public/2024-10/slide-image-5.png b/sites/default/files/styles/slick_media/public/2024-10/slide-image-5.png new file mode 100755 index 0000000..3d1df43 Binary files /dev/null and b/sites/default/files/styles/slick_media/public/2024-10/slide-image-5.png differ diff --git a/sites/default/files/styles/slick_media/public/2024-10/slide-image-7.png b/sites/default/files/styles/slick_media/public/2024-10/slide-image-7.png new file mode 100755 index 0000000..6dbe5b1 Binary files /dev/null and b/sites/default/files/styles/slick_media/public/2024-10/slide-image-7.png differ diff --git a/sites/default/files/styles/thumbnail/public/2024-10/slide-image-4.png b/sites/default/files/styles/thumbnail/public/2024-10/slide-image-4.png new file mode 100755 index 0000000..bd5523f Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/2024-10/slide-image-4.png differ diff --git a/sites/default/files/styles/thumbnail/public/2024-10/slide-image-5.png b/sites/default/files/styles/thumbnail/public/2024-10/slide-image-5.png new file mode 100755 index 0000000..f435951 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/2024-10/slide-image-5.png differ diff --git a/sites/default/files/styles/thumbnail/public/2024-10/slide-image-7.png b/sites/default/files/styles/thumbnail/public/2024-10/slide-image-7.png new file mode 100755 index 0000000..413915a Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/2024-10/slide-image-7.png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Auto Street Light(1).png b/sites/default/files/styles/thumbnail/public/AoC_Auto Street Light(1).png new file mode 100755 index 0000000..d35ff71 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Auto Street Light(1).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Auto Street Light(2).gif b/sites/default/files/styles/thumbnail/public/AoC_Auto Street Light(2).gif new file mode 100755 index 0000000..78441d5 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Auto Street Light(2).gif differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Auto Street Light(3).png b/sites/default/files/styles/thumbnail/public/AoC_Auto Street Light(3).png new file mode 100755 index 0000000..d963ad8 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Auto Street Light(3).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Blink LED(1).jpeg b/sites/default/files/styles/thumbnail/public/AoC_Blink LED(1).jpeg new file mode 100755 index 0000000..0b164d6 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Blink LED(1).jpeg differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Blink LED(2).png b/sites/default/files/styles/thumbnail/public/AoC_Blink LED(2).png new file mode 100755 index 0000000..7ffb690 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Blink LED(2).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Blink LED(3).gif b/sites/default/files/styles/thumbnail/public/AoC_Blink LED(3).gif new file mode 100755 index 0000000..c6ca0e2 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Blink LED(3).gif differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Control LED using Relay(2).png b/sites/default/files/styles/thumbnail/public/AoC_Control LED using Relay(2).png new file mode 100755 index 0000000..e22439b Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Control LED using Relay(2).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Control LED with Relay(1).gif b/sites/default/files/styles/thumbnail/public/AoC_Control LED with Relay(1).gif new file mode 100755 index 0000000..e792ad5 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Control LED with Relay(1).gif differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Control LED with Relay(3).gif b/sites/default/files/styles/thumbnail/public/AoC_Control LED with Relay(3).gif new file mode 100755 index 0000000..8b1a7ee Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Control LED with Relay(3).gif differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Electronic Dice (2).png b/sites/default/files/styles/thumbnail/public/AoC_Electronic Dice (2).png new file mode 100755 index 0000000..70f44ff Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Electronic Dice (2).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Electronic Dice(1).png b/sites/default/files/styles/thumbnail/public/AoC_Electronic Dice(1).png new file mode 100755 index 0000000..fce0778 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Electronic Dice(1).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Electronic Dice(3).gif b/sites/default/files/styles/thumbnail/public/AoC_Electronic Dice(3).gif new file mode 100755 index 0000000..ea29cba Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Electronic Dice(3).gif differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Gas Sensor(1).jpg b/sites/default/files/styles/thumbnail/public/AoC_Gas Sensor(1).jpg new file mode 100755 index 0000000..723864f Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Gas Sensor(1).jpg differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Gas Sensor(4).png b/sites/default/files/styles/thumbnail/public/AoC_Gas Sensor(4).png new file mode 100755 index 0000000..d0f3780 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Gas Sensor(4).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Gas senrsor(3).png b/sites/default/files/styles/thumbnail/public/AoC_Gas senrsor(3).png new file mode 100755 index 0000000..dd4afc2 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Gas senrsor(3).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Gas sensor(2).png b/sites/default/files/styles/thumbnail/public/AoC_Gas sensor(2).png new file mode 100755 index 0000000..a3f2371 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Gas sensor(2).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Intruder sensor(1).png b/sites/default/files/styles/thumbnail/public/AoC_Intruder sensor(1).png new file mode 100755 index 0000000..0566bf8 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Intruder sensor(1).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Intruder sensor(2).png b/sites/default/files/styles/thumbnail/public/AoC_Intruder sensor(2).png new file mode 100755 index 0000000..0ce4e0d Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Intruder sensor(2).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Intruder sensor(3).gif b/sites/default/files/styles/thumbnail/public/AoC_Intruder sensor(3).gif new file mode 100755 index 0000000..ed84844 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Intruder sensor(3).gif differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_LCD ScrollingText(1).gif b/sites/default/files/styles/thumbnail/public/AoC_LCD ScrollingText(1).gif new file mode 100755 index 0000000..e0858f6 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_LCD ScrollingText(1).gif differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_LCD ScrollingText(2).png b/sites/default/files/styles/thumbnail/public/AoC_LCD ScrollingText(2).png new file mode 100755 index 0000000..7ed5327 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_LCD ScrollingText(2).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_LCD ScrollingText(3).gif b/sites/default/files/styles/thumbnail/public/AoC_LCD ScrollingText(3).gif new file mode 100755 index 0000000..a1aabbc Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_LCD ScrollingText(3).gif differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_LED Control Button(1).jpg b/sites/default/files/styles/thumbnail/public/AoC_LED Control Button(1).jpg new file mode 100755 index 0000000..9814f40 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_LED Control Button(1).jpg differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_LED Control Button(2).gif b/sites/default/files/styles/thumbnail/public/AoC_LED Control Button(2).gif new file mode 100755 index 0000000..66329f0 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_LED Control Button(2).gif differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_LED Control Button(3).png b/sites/default/files/styles/thumbnail/public/AoC_LED Control Button(3).png new file mode 100755 index 0000000..1901c8d Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_LED Control Button(3).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_LED Control Button(4).gif b/sites/default/files/styles/thumbnail/public/AoC_LED Control Button(4).gif new file mode 100755 index 0000000..72bf5fa Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_LED Control Button(4).gif differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Motion senosr with alarm (4).gif b/sites/default/files/styles/thumbnail/public/AoC_Motion senosr with alarm (4).gif new file mode 100755 index 0000000..903f143 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Motion senosr with alarm (4).gif differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Motion sensor with Alarm (2).gif b/sites/default/files/styles/thumbnail/public/AoC_Motion sensor with Alarm (2).gif new file mode 100755 index 0000000..84425a8 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Motion sensor with Alarm (2).gif differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Motion sensor with Alarm (3).png b/sites/default/files/styles/thumbnail/public/AoC_Motion sensor with Alarm (3).png new file mode 100755 index 0000000..3ccd82f Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Motion sensor with Alarm (3).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Motion sensor with Alarm (5).png b/sites/default/files/styles/thumbnail/public/AoC_Motion sensor with Alarm (5).png new file mode 100755 index 0000000..6969e95 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Motion sensor with Alarm (5).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Motion sensor with alarm(1).jpg b/sites/default/files/styles/thumbnail/public/AoC_Motion sensor with alarm(1).jpg new file mode 100755 index 0000000..f1fc5d1 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Motion sensor with alarm(1).jpg differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_RGB Temp Indicator(1).jpg b/sites/default/files/styles/thumbnail/public/AoC_RGB Temp Indicator(1).jpg new file mode 100755 index 0000000..c092d83 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_RGB Temp Indicator(1).jpg differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_RGB Temp Indicator(2).jpg b/sites/default/files/styles/thumbnail/public/AoC_RGB Temp Indicator(2).jpg new file mode 100755 index 0000000..4c69d72 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_RGB Temp Indicator(2).jpg differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_RGB Temp Indicator(3).png b/sites/default/files/styles/thumbnail/public/AoC_RGB Temp Indicator(3).png new file mode 100755 index 0000000..872a055 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_RGB Temp Indicator(3).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_RGB Temp Indicator(4).gif b/sites/default/files/styles/thumbnail/public/AoC_RGB Temp Indicator(4).gif new file mode 100755 index 0000000..b45533f Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_RGB Temp Indicator(4).gif differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Servo Motor(2).gif b/sites/default/files/styles/thumbnail/public/AoC_Servo Motor(2).gif new file mode 100755 index 0000000..6dfea3e Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Servo Motor(2).gif differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Servo Motor(3).png b/sites/default/files/styles/thumbnail/public/AoC_Servo Motor(3).png new file mode 100755 index 0000000..ed20240 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Servo Motor(3).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Servo Motor(4).gif b/sites/default/files/styles/thumbnail/public/AoC_Servo Motor(4).gif new file mode 100755 index 0000000..e4accd3 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Servo Motor(4).gif differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Therimstor Temp Display(4).gif b/sites/default/files/styles/thumbnail/public/AoC_Therimstor Temp Display(4).gif new file mode 100755 index 0000000..c11fda2 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Therimstor Temp Display(4).gif differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Thermistor Temp Display(1).png b/sites/default/files/styles/thumbnail/public/AoC_Thermistor Temp Display(1).png new file mode 100755 index 0000000..64e01ab Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Thermistor Temp Display(1).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Thermistor Temp Display(2).gif b/sites/default/files/styles/thumbnail/public/AoC_Thermistor Temp Display(2).gif new file mode 100755 index 0000000..2d8f83e Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Thermistor Temp Display(2).gif differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_Thermistor temp Display(3).png b/sites/default/files/styles/thumbnail/public/AoC_Thermistor temp Display(3).png new file mode 100755 index 0000000..1f1b456 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_Thermistor temp Display(3).png differ diff --git a/sites/default/files/styles/thumbnail/public/AoC_servo motor(1).jpeg b/sites/default/files/styles/thumbnail/public/AoC_servo motor(1).jpeg new file mode 100755 index 0000000..68aa610 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/AoC_servo motor(1).jpeg differ diff --git a/sites/default/files/styles/thumbnail/public/Arduino on Cloud_Up and Down Counter(1).png b/sites/default/files/styles/thumbnail/public/Arduino on Cloud_Up and Down Counter(1).png new file mode 100755 index 0000000..e46a2ac Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/Arduino on Cloud_Up and Down Counter(1).png differ diff --git a/sites/default/files/styles/thumbnail/public/Arduino on Cloud_Up and Down Counter(2).png b/sites/default/files/styles/thumbnail/public/Arduino on Cloud_Up and Down Counter(2).png new file mode 100755 index 0000000..2471251 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/Arduino on Cloud_Up and Down Counter(2).png differ diff --git a/sites/default/files/styles/thumbnail/public/Arduino on Cloud_Up and Down Counter.gif b/sites/default/files/styles/thumbnail/public/Arduino on Cloud_Up and Down Counter.gif new file mode 100755 index 0000000..d2861ac Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/Arduino on Cloud_Up and Down Counter.gif differ diff --git a/sites/default/files/styles/thumbnail/public/Blink_1.png b/sites/default/files/styles/thumbnail/public/Blink_1.png new file mode 100755 index 0000000..f64e8a3 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/Blink_1.png differ diff --git a/sites/default/files/styles/thumbnail/public/Blink_2.png b/sites/default/files/styles/thumbnail/public/Blink_2.png new file mode 100755 index 0000000..9a12aca Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/Blink_2.png differ diff --git a/sites/default/files/styles/thumbnail/public/Blink_3.png b/sites/default/files/styles/thumbnail/public/Blink_3.png new file mode 100755 index 0000000..1169b7d Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/Blink_3.png differ diff --git a/sites/default/files/styles/thumbnail/public/Blink_4.png b/sites/default/files/styles/thumbnail/public/Blink_4.png new file mode 100755 index 0000000..aa12a55 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/Blink_4.png differ diff --git a/sites/default/files/styles/thumbnail/public/Blink_5.png b/sites/default/files/styles/thumbnail/public/Blink_5.png new file mode 100755 index 0000000..5c64297 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/Blink_5.png differ diff --git a/sites/default/files/styles/thumbnail/public/Blink_6.png b/sites/default/files/styles/thumbnail/public/Blink_6.png new file mode 100755 index 0000000..b10ec31 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/Blink_6.png differ diff --git a/sites/default/files/styles/thumbnail/public/Blink_7.png b/sites/default/files/styles/thumbnail/public/Blink_7.png new file mode 100755 index 0000000..e2f01cf Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/Blink_7.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_Blink of LED.jpg b/sites/default/files/styles/thumbnail/public/E_Blink of LED.jpg new file mode 100755 index 0000000..0b164d6 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Blink of LED.jpg differ diff --git a/sites/default/files/styles/thumbnail/public/E_Blink of LED_1.png b/sites/default/files/styles/thumbnail/public/E_Blink of LED_1.png new file mode 100755 index 0000000..c0fca2e Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Blink of LED_1.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_Blink of LED_7.gif b/sites/default/files/styles/thumbnail/public/E_Blink of LED_7.gif new file mode 100755 index 0000000..014bf18 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Blink of LED_7.gif differ diff --git a/sites/default/files/styles/thumbnail/public/E_Control LED.jpg b/sites/default/files/styles/thumbnail/public/E_Control LED.jpg new file mode 100755 index 0000000..9814f40 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Control LED.jpg differ diff --git a/sites/default/files/styles/thumbnail/public/E_Control LED_1.gif b/sites/default/files/styles/thumbnail/public/E_Control LED_1.gif new file mode 100755 index 0000000..66329f0 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Control LED_1.gif differ diff --git a/sites/default/files/styles/thumbnail/public/E_Intruder.png b/sites/default/files/styles/thumbnail/public/E_Intruder.png new file mode 100755 index 0000000..0566bf8 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Intruder.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_Intruder_1.png b/sites/default/files/styles/thumbnail/public/E_Intruder_1.png new file mode 100755 index 0000000..5fb4015 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Intruder_1.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_Intruder_2.png b/sites/default/files/styles/thumbnail/public/E_Intruder_2.png new file mode 100755 index 0000000..7e3c158 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Intruder_2.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_Intruder_3.png b/sites/default/files/styles/thumbnail/public/E_Intruder_3.png new file mode 100755 index 0000000..ac22d53 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Intruder_3.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_Intruder_4.png b/sites/default/files/styles/thumbnail/public/E_Intruder_4.png new file mode 100755 index 0000000..a3c96ec Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Intruder_4.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_Intruder_5.gif b/sites/default/files/styles/thumbnail/public/E_Intruder_5.gif new file mode 100755 index 0000000..3e9915c Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Intruder_5.gif differ diff --git a/sites/default/files/styles/thumbnail/public/E_LCD 2.png b/sites/default/files/styles/thumbnail/public/E_LCD 2.png new file mode 100755 index 0000000..d84e7b9 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_LCD 2.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_LCD 3.png b/sites/default/files/styles/thumbnail/public/E_LCD 3.png new file mode 100755 index 0000000..d84e7b9 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_LCD 3.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_LCD.gif b/sites/default/files/styles/thumbnail/public/E_LCD.gif new file mode 100755 index 0000000..e0858f6 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_LCD.gif differ diff --git a/sites/default/files/styles/thumbnail/public/E_LCD_1.png b/sites/default/files/styles/thumbnail/public/E_LCD_1.png new file mode 100755 index 0000000..3a0ec1a Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_LCD_1.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_LCD_2.png b/sites/default/files/styles/thumbnail/public/E_LCD_2.png new file mode 100755 index 0000000..187a99b Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_LCD_2.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_LCD_4.png b/sites/default/files/styles/thumbnail/public/E_LCD_4.png new file mode 100755 index 0000000..be85788 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_LCD_4.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_LCD_5.gif b/sites/default/files/styles/thumbnail/public/E_LCD_5.gif new file mode 100755 index 0000000..297d95e Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_LCD_5.gif differ diff --git a/sites/default/files/styles/thumbnail/public/E_Servo.gif b/sites/default/files/styles/thumbnail/public/E_Servo.gif new file mode 100755 index 0000000..6dfea3e Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Servo.gif differ diff --git a/sites/default/files/styles/thumbnail/public/E_Servo_1.jpg b/sites/default/files/styles/thumbnail/public/E_Servo_1.jpg new file mode 100755 index 0000000..4c69d72 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Servo_1.jpg differ diff --git a/sites/default/files/styles/thumbnail/public/E_Servo_2.png b/sites/default/files/styles/thumbnail/public/E_Servo_2.png new file mode 100755 index 0000000..9db1877 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Servo_2.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_Servo_3.png b/sites/default/files/styles/thumbnail/public/E_Servo_3.png new file mode 100755 index 0000000..b0186ba Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Servo_3.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_Servo_4.png b/sites/default/files/styles/thumbnail/public/E_Servo_4.png new file mode 100755 index 0000000..6bb11a2 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Servo_4.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_Servo_5.png b/sites/default/files/styles/thumbnail/public/E_Servo_5.png new file mode 100755 index 0000000..216c24a Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Servo_5.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_Servo_6.png b/sites/default/files/styles/thumbnail/public/E_Servo_6.png new file mode 100755 index 0000000..beb754a Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Servo_6.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_Servo_7.gif b/sites/default/files/styles/thumbnail/public/E_Servo_7.gif new file mode 100755 index 0000000..95da62b Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Servo_7.gif differ diff --git a/sites/default/files/styles/thumbnail/public/E_Temp.jpg b/sites/default/files/styles/thumbnail/public/E_Temp.jpg new file mode 100755 index 0000000..c092d83 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Temp.jpg differ diff --git a/sites/default/files/styles/thumbnail/public/E_Temp_1.png b/sites/default/files/styles/thumbnail/public/E_Temp_1.png new file mode 100755 index 0000000..99cc59a Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Temp_1.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_Temp_2.png b/sites/default/files/styles/thumbnail/public/E_Temp_2.png new file mode 100755 index 0000000..17dbe95 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Temp_2.png differ diff --git a/sites/default/files/styles/thumbnail/public/E_Temp_3.png b/sites/default/files/styles/thumbnail/public/E_Temp_3.png new file mode 100755 index 0000000..b0957ec Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/E_Temp_3.png differ diff --git a/sites/default/files/styles/thumbnail/public/LED_Pushbutton_1.png b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_1.png new file mode 100755 index 0000000..cc74f7e Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_1.png differ diff --git a/sites/default/files/styles/thumbnail/public/LED_Pushbutton_10.png b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_10.png new file mode 100755 index 0000000..d9617c9 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_10.png differ diff --git a/sites/default/files/styles/thumbnail/public/LED_Pushbutton_11.png b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_11.png new file mode 100755 index 0000000..a434371 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_11.png differ diff --git a/sites/default/files/styles/thumbnail/public/LED_Pushbutton_12.png b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_12.png new file mode 100755 index 0000000..6ccb9f1 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_12.png differ diff --git a/sites/default/files/styles/thumbnail/public/LED_Pushbutton_13.png b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_13.png new file mode 100755 index 0000000..39b920c Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_13.png differ diff --git a/sites/default/files/styles/thumbnail/public/LED_Pushbutton_14.gif b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_14.gif new file mode 100755 index 0000000..b268390 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_14.gif differ diff --git a/sites/default/files/styles/thumbnail/public/LED_Pushbutton_2.png b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_2.png new file mode 100755 index 0000000..5c55133 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_2.png differ diff --git a/sites/default/files/styles/thumbnail/public/LED_Pushbutton_3.png b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_3.png new file mode 100755 index 0000000..9a4eaea Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_3.png differ diff --git a/sites/default/files/styles/thumbnail/public/LED_Pushbutton_4.png b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_4.png new file mode 100755 index 0000000..1de4e96 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_4.png differ diff --git a/sites/default/files/styles/thumbnail/public/LED_Pushbutton_5.png b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_5.png new file mode 100755 index 0000000..6edc123 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_5.png differ diff --git a/sites/default/files/styles/thumbnail/public/LED_Pushbutton_6.png b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_6.png new file mode 100755 index 0000000..1d639ae Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_6.png differ diff --git a/sites/default/files/styles/thumbnail/public/LED_Pushbutton_7.png b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_7.png new file mode 100755 index 0000000..4d515b0 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_7.png differ diff --git a/sites/default/files/styles/thumbnail/public/LED_Pushbutton_8.png b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_8.png new file mode 100755 index 0000000..fbecd3a Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_8.png differ diff --git a/sites/default/files/styles/thumbnail/public/LED_Pushbutton_9.png b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_9.png new file mode 100755 index 0000000..956b14f Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/LED_Pushbutton_9.png differ diff --git a/sites/default/files/styles/thumbnail/public/fossee_logo.png b/sites/default/files/styles/thumbnail/public/fossee_logo.png new file mode 100755 index 0000000..77f0ae3 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/fossee_logo.png differ diff --git a/sites/default/files/styles/thumbnail/public/gas sesnor.gif b/sites/default/files/styles/thumbnail/public/gas sesnor.gif new file mode 100755 index 0000000..e6bac4a Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/gas sesnor.gif differ diff --git a/sites/default/files/styles/thumbnail/public/left-img.png b/sites/default/files/styles/thumbnail/public/left-img.png new file mode 100755 index 0000000..df6d257 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/left-img.png differ diff --git a/sites/default/files/styles/thumbnail/public/pictures/picture-117-1695749316.jpg b/sites/default/files/styles/thumbnail/public/pictures/picture-117-1695749316.jpg new file mode 100755 index 0000000..c6d5252 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/pictures/picture-117-1695749316.jpg differ diff --git a/sites/default/files/styles/thumbnail/public/pictures/picture-128-1703396741.jpg b/sites/default/files/styles/thumbnail/public/pictures/picture-128-1703396741.jpg new file mode 100755 index 0000000..b79cdd3 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/pictures/picture-128-1703396741.jpg differ diff --git a/sites/default/files/styles/thumbnail/public/pictures/picture-129-1702640010.jpg b/sites/default/files/styles/thumbnail/public/pictures/picture-129-1702640010.jpg new file mode 100755 index 0000000..22801ca Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/pictures/picture-129-1702640010.jpg differ diff --git a/sites/default/files/styles/thumbnail/public/pictures/picture-147-1719490209.jpg b/sites/default/files/styles/thumbnail/public/pictures/picture-147-1719490209.jpg new file mode 100755 index 0000000..1dcd417 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/pictures/picture-147-1719490209.jpg differ diff --git a/sites/default/files/styles/thumbnail/public/pictures/picture-46-1624961678.jpg b/sites/default/files/styles/thumbnail/public/pictures/picture-46-1624961678.jpg new file mode 100755 index 0000000..0f20e97 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/pictures/picture-46-1624961678.jpg differ diff --git a/sites/default/files/styles/thumbnail/public/pictures/picture-50-1624962784.jpg b/sites/default/files/styles/thumbnail/public/pictures/picture-50-1624962784.jpg new file mode 100755 index 0000000..2522f95 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/pictures/picture-50-1624962784.jpg differ diff --git a/sites/default/files/styles/thumbnail/public/pictures/picture-51-1624962503.jpg b/sites/default/files/styles/thumbnail/public/pictures/picture-51-1624962503.jpg new file mode 100755 index 0000000..8f2229e Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/pictures/picture-51-1624962503.jpg differ diff --git a/sites/default/files/styles/thumbnail/public/pictures/picture-53-1624962885.png b/sites/default/files/styles/thumbnail/public/pictures/picture-53-1624962885.png new file mode 100755 index 0000000..9a8e3b8 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/pictures/picture-53-1624962885.png differ diff --git a/sites/default/files/styles/thumbnail/public/pictures/picture-57-1624969463.jpg b/sites/default/files/styles/thumbnail/public/pictures/picture-57-1624969463.jpg new file mode 100755 index 0000000..154e3cf Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/pictures/picture-57-1624969463.jpg differ diff --git a/sites/default/files/styles/thumbnail/public/pictures/picture-62-1626780241.jpg b/sites/default/files/styles/thumbnail/public/pictures/picture-62-1626780241.jpg new file mode 100755 index 0000000..2e87391 Binary files /dev/null and b/sites/default/files/styles/thumbnail/public/pictures/picture-62-1626780241.jpg differ diff --git a/sites/default/files/xmlsitemap/NXhscRe0440PFpI5dSznEVgmauL25KojD7u4e9aZwOM/1.xml b/sites/default/files/xmlsitemap/NXhscRe0440PFpI5dSznEVgmauL25KojD7u4e9aZwOM/1.xml new file mode 100755 index 0000000..b52dc86 --- /dev/null +++ b/sites/default/files/xmlsitemap/NXhscRe0440PFpI5dSznEVgmauL25KojD7u4e9aZwOM/1.xml @@ -0,0 +1,5 @@ + + + +//scilab-arduino.fossee.in/daily1.0 + diff --git a/sites/default/settings.php b/sites/default/settings.php new file mode 100755 index 0000000..9d0f367 --- /dev/null +++ b/sites/default/settings.php @@ -0,0 +1,799 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ); + * @endcode + */ +$databases = array(); + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => array( + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ), + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => array( + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ); + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = array( + * 'init_commands' => array( + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ), + * 'pdo' => array( + * PDO::ATTR_TIMEOUT => 5, + * ), + * ); + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = array( + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ); + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = array( + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ); + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $config_directories array specifies the location of file system + * directories used for configuration data. On install, the "sync" directory is + * created. This is used for configuration imports. The "active" directory is + * not created by default since the default storage for active configuration is + * the database rather than the file system. (This can be changed. See "Active + * configuration settings" below). + * + * The default location for the "sync" directory is inside a randomly-named + * directory in the public files path. The setting below allows you to override + * the "sync" location. + * + * If you use files for the "active" configuration, you can tell the + * Configuration system where this directory is located by adding an entry with + * array key CONFIG_ACTIVE_DIRECTORY. + * + * Example: + * @code + * $config_directories = array( + * CONFIG_SYNC_DIRECTORY => '/directory/outside/webroot', + * ); + * @endcode + */ +$config_directories = array(); + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * The active installation profile. + * + * Changing this after installation is not recommended as it changes which + * directories are scanned during extension discovery. If this is set prior to + * installation this value will be rewritten according to the profile selected + * by the user. + * + * @see install_select_profile() + * + * @deprecated in Drupal 8.3.0 and will be removed before Drupal 9.0.0. The + * install profile is written to the core.extension configuration. If a + * service requires the install profile use the 'install_profile' container + * parameter. Functional code can use \Drupal::installProfile(). + */ +# $settings['install_profile'] = ''; + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = 'o8l6axeM_d7Y4ba2lLC5LVK0nGa8I9kSWH_qJRzHrfTb1ZzniCD_pZk7K9rWONxgMFNwKaE4CA'; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from + * the X-Forwarded-For header (or $settings['reverse_proxy_header'] if set). + * If you are unsure about this setting, do not have a reverse proxy, + * or Drupal operates in a shared hosting environment, this setting + * should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = array('a.b.c.d', ...); + +/** + * Set this value if your proxy server sends the client IP in a header + * other than X-Forwarded-For. + */ +# $settings['reverse_proxy_header'] = 'X_CLUSTER_CLIENT_IP'; + +/** + * Set this value if your proxy server sends the client protocol in a header + * other than X-Forwarded-Proto. + */ +# $settings['reverse_proxy_proto_header'] = 'X_FORWARDED_PROTO'; + +/** + * Set this value if your proxy server sends the client protocol in a header + * other than X-Forwarded-Host. + */ +# $settings['reverse_proxy_host_header'] = 'X_FORWARDED_HOST'; + +/** + * Set this value if your proxy server sends the client protocol in a header + * other than X-Forwarded-Port. + */ +# $settings['reverse_proxy_port_header'] = 'X_FORWARDED_PORT'; + +/** + * Set this value if your proxy server sends the client protocol in a header + * other than Forwarded. + */ +# $settings['reverse_proxy_forwarded_header'] = 'FORWARDED'; + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = array( +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ); + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Active configuration settings. + * + * By default, the active configuration is stored in the database in the + * {config} table. To use a different storage mechanism for the active + * configuration, do the following prior to installing: + * - Create an "active" directory and declare its path in $config_directories + * as explained under the 'Location of the site configuration files' section + * above in this file. To enhance security, you can declare a path that is + * outside your document root. + * - Override the 'bootstrap_config_storage' setting here. It must be set to a + * callable that returns an object that implements + * \Drupal\Core\Config\StorageInterface. + * - Override the service definition 'config.storage.active'. Put this + * override in a services.yml file in the same directory as settings.php + * (definitions in this file will override service definition defaults). + */ +# $settings['bootstrap_config_storage'] = array('Drupal\Core\Config\BootstrapConfigStorageFactory', 'getFileStorage'); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.file']['path']['temporary'] = '/tmp'; +# $config['system.site']['name'] = 'My Drupal site'; +# $config['system.theme']['default'] = 'stark'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

The requested URL "@path" was not found on this server.

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = array( + * '^www\.example\.com$', + * ); + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = array( + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ); + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see file_scan_directory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +$databases['default']['default'] = array ( + 'database' => '', + 'username' => '', + 'password' => '', + 'prefix' => '', + 'host' => '', + 'port' => '3306', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', +); +$settings['state_cache'] = TRUE; +$settings['config_sync_directory'] = 'sites/default/files/config_vq1B607jBFA3Twi2DHiSFERzkR5tSP9zI4_ngAhzP3lfeMD8Cv1ZBvE9iEhxX0iknVTUYS_9EQ/sync'; diff --git a/themes/openplc/css/header.css b/themes/openplc/css/header.css new file mode 100755 index 0000000..ec2b55b --- /dev/null +++ b/themes/openplc/css/header.css @@ -0,0 +1,34 @@ +#openplc_jumbo{ + background-color: white; + padding: 0.5em 0.6em; + h1 {font-size: 2em;} + p { font-size: 1.2em; + .btn {padding: 0.5em;}} + border: 2px solid red; + border-radius: 8px; + margin-bottom: 2px; + } +#openplc_jumbo h3{ + color: #343434; + font-weight: normal; + font-family: 'Ultra', sans-serif; + font-size: 36px; + line-height: 42px; + text-transform: uppercase; + text-shadow: 0 2px white, 0 3px #777; + display:inline; + float:right; + margin-top: 15px; +} +ol, ul { + margin-top: 0; + margin-bottom: 10px; +/* padding-left: 0px;*/ +} +#openplc_nav{ + margin-bottom: 0px; +} +/* FLex Slider Nav Next Prev Button */ +.flexslider .flex-direction-nav a { + display: none; + } diff --git a/themes/openplc/css/style.css b/themes/openplc/css/style.css new file mode 100755 index 0000000..dc1a36e --- /dev/null +++ b/themes/openplc/css/style.css @@ -0,0 +1,79 @@ +.fas fa-forward{ + padding-top: 62px; +} +.fas fa-backward{ + padding-top: 62px; + } + + +/* Styling Link for menu--resources.html.twig */ + +.menu_link a{ + color: azure; + text-decoration: none !important; + +} +.menu_link a:hover { + color: #fff; +} +#block-download-menu{ + background: #086821; + color:white; +} + +/* Nav Bar SuperFish */ +#superfish-main { + background: black; + } +#superfish-main >li>a{ + color:white; + text-decoration: none; + font-family: monospace; + font-size: 14px; + } +#superfish-main >li>a:hover{ + color:white; + background: orangered; + } + + /* Mobile View SuperFish */ +#superfish-main-accordion { + background: black; + } +#superfish-main-accordion >li>a{ + color:white; + text-decoration: none; + font-family: monospace; + font-size: 14px; + } +#superfish-main-accordion >li>a:hover{ + color:white; + background: orangered; + } + + + /* SuperFish Children */ + +.sf-menu li li { + background:orangered; + color: white; +} +.sf-menu li li:hover{ + background: grey; + +} +.sf-menu li li a{ + /* box color for second-level menu items */ + color: white; + font-family: monospace; + font-size: 14px; + text-decoration: none; +} + +.sf-accordion-toggle.sf-style-none { + background: #000 !important; +} + +.btn{ + background: #e5f5cb !important; +} diff --git a/themes/openplc/image/NMEICT.png b/themes/openplc/image/NMEICT.png new file mode 100755 index 0000000..b57da4b Binary files /dev/null and b/themes/openplc/image/NMEICT.png differ diff --git a/themes/openplc/image/footer_license.png b/themes/openplc/image/footer_license.png new file mode 100755 index 0000000..e76aeff Binary files /dev/null and b/themes/openplc/image/footer_license.png differ diff --git a/themes/openplc/image/fossee-logo.png b/themes/openplc/image/fossee-logo.png new file mode 100755 index 0000000..ecd7e44 Binary files /dev/null and b/themes/openplc/image/fossee-logo.png differ diff --git a/themes/openplc/image/iitb-logo.png b/themes/openplc/image/iitb-logo.png new file mode 100755 index 0000000..8134c71 Binary files /dev/null and b/themes/openplc/image/iitb-logo.png differ diff --git a/themes/openplc/includes/bootstrap/css/bootstrap-theme.min.css b/themes/openplc/includes/bootstrap/css/bootstrap-theme.min.css new file mode 100755 index 0000000..ba4bd28 --- /dev/null +++ b/themes/openplc/includes/bootstrap/css/bootstrap-theme.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.1.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn:active,.btn.active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top,#428bca 0,#2d6ca2 100%);background-image:linear-gradient(to bottom,#428bca 0,#2d6ca2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#2b669a}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);background-color:#357ebd}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);border-color:#3278b3}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} \ No newline at end of file diff --git a/themes/openplc/includes/bootstrap/css/bootstrap.css b/themes/openplc/includes/bootstrap/css/bootstrap.css new file mode 100755 index 0000000..6167622 --- /dev/null +++ b/themes/openplc/includes/bootstrap/css/bootstrap.css @@ -0,0 +1,6757 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + margin: .67em 0; + font-size: 2em; +} +mark { + color: #000; + background: #ff0; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -.5em; +} +sub { + bottom: -.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\002a"; +} +.glyphicon-plus:before { + content: "\002b"; +} +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +.glyphicon-cd:before { + content: "\e201"; +} +.glyphicon-save-file:before { + content: "\e202"; +} +.glyphicon-open-file:before { + content: "\e203"; +} +.glyphicon-level-up:before { + content: "\e204"; +} +.glyphicon-copy:before { + content: "\e205"; +} +.glyphicon-paste:before { + content: "\e206"; +} +.glyphicon-alert:before { + content: "\e209"; +} +.glyphicon-equalizer:before { + content: "\e210"; +} +.glyphicon-king:before { + content: "\e211"; +} +.glyphicon-queen:before { + content: "\e212"; +} +.glyphicon-pawn:before { + content: "\e213"; +} +.glyphicon-bishop:before { + content: "\e214"; +} +.glyphicon-knight:before { + content: "\e215"; +} +.glyphicon-baby-formula:before { + content: "\e216"; +} +.glyphicon-tent:before { + content: "\26fa"; +} +.glyphicon-blackboard:before { + content: "\e218"; +} +.glyphicon-bed:before { + content: "\e219"; +} +.glyphicon-apple:before { + content: "\f8ff"; +} +.glyphicon-erase:before { + content: "\e221"; +} +.glyphicon-hourglass:before { + content: "\231b"; +} +.glyphicon-lamp:before { + content: "\e223"; +} +.glyphicon-duplicate:before { + content: "\e224"; +} +.glyphicon-piggy-bank:before { + content: "\e225"; +} +.glyphicon-scissors:before { + content: "\e226"; +} +.glyphicon-bitcoin:before { + content: "\e227"; +} +.glyphicon-btc:before { + content: "\e227"; +} +.glyphicon-xbt:before { + content: "\e227"; +} +.glyphicon-yen:before { + content: "\00a5"; +} +.glyphicon-jpy:before { + content: "\00a5"; +} +.glyphicon-ruble:before { + content: "\20bd"; +} +.glyphicon-rub:before { + content: "\20bd"; +} +.glyphicon-scale:before { + content: "\e230"; +} +.glyphicon-ice-lolly:before { + content: "\e231"; +} +.glyphicon-ice-lolly-tasted:before { + content: "\e232"; +} +.glyphicon-education:before { + content: "\e233"; +} +.glyphicon-option-horizontal:before { + content: "\e234"; +} +.glyphicon-option-vertical:before { + content: "\e235"; +} +.glyphicon-menu-hamburger:before { + content: "\e236"; +} +.glyphicon-modal-window:before { + content: "\e237"; +} +.glyphicon-oil:before { + content: "\e238"; +} +.glyphicon-grain:before { + content: "\e239"; +} +.glyphicon-sunglasses:before { + content: "\e240"; +} +.glyphicon-text-size:before { + content: "\e241"; +} +.glyphicon-text-color:before { + content: "\e242"; +} +.glyphicon-text-background:before { + content: "\e243"; +} +.glyphicon-object-align-top:before { + content: "\e244"; +} +.glyphicon-object-align-bottom:before { + content: "\e245"; +} +.glyphicon-object-align-horizontal:before { + content: "\e246"; +} +.glyphicon-object-align-left:before { + content: "\e247"; +} +.glyphicon-object-align-vertical:before { + content: "\e248"; +} +.glyphicon-object-align-right:before { + content: "\e249"; +} +.glyphicon-triangle-right:before { + content: "\e250"; +} +.glyphicon-triangle-left:before { + content: "\e251"; +} +.glyphicon-triangle-bottom:before { + content: "\e252"; +} +.glyphicon-triangle-top:before { + content: "\e253"; +} +.glyphicon-console:before { + content: "\e254"; +} +.glyphicon-superscript:before { + content: "\e255"; +} +.glyphicon-subscript:before { + content: "\e256"; +} +.glyphicon-menu-left:before { + content: "\e257"; +} +.glyphicon-menu-right:before { + content: "\e258"; +} +.glyphicon-menu-down:before { + content: "\e259"; +} +.glyphicon-menu-up:before { + content: "\e260"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +[role="button"] { + cursor: pointer; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +mark, +.mark { + padding: .2em; + background-color: #fcf8e3; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #777; +} +.text-primary { + color: #337ab7; +} +a.text-primary:hover, +a.text-primary:focus { + color: #286090; +} +.text-success { + color: #3c763d; +} +a.text-success:hover, +a.text-success:focus { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover, +a.text-info:focus { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover, +a.text-warning:focus { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover, +a.text-danger:focus { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:hover, +a.bg-primary:focus { + background-color: #286090; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover, +a.bg-success:focus { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover, +a.bg-info:focus { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover, +a.bg-warning:focus { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover, +a.bg-danger:focus { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + margin-left: -5px; + list-style: none; +} +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.row { + margin-right: -15px; + margin-left: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0; +} +@media (min-width: 768px) { + .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 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} +@media (min-width: 992px) { + .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 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0; + } +} +@media (min-width: 1200px) { + .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 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +.table-responsive { + min-height: .01%; + overflow-x: auto; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); +} +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999; +} +.form-control::-webkit-input-placeholder { + color: #999; +} +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: #eee; + opacity: 1; +} +.form-control[disabled], +fieldset[disabled] .form-control { + cursor: not-allowed; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"].form-control, + input[type="time"].form-control, + input[type="datetime-local"].form-control, + input[type="month"].form-control { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .input-group-sm input[type="date"], + .input-group-sm input[type="time"], + .input-group-sm input[type="datetime-local"], + .input-group-sm input[type="month"] { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .input-group-lg input[type="date"], + .input-group-lg input[type="time"], + .input-group-lg input[type="datetime-local"], + .input-group-lg input[type="month"] { + line-height: 46px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + min-height: 34px; + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-right: 0; + padding-left: 0; +} +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.form-group-sm select.form-control { + height: 30px; + line-height: 30px; +} +.form-group-sm textarea.form-control, +.form-group-sm select[multiple].form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 6px 10px; + font-size: 12px; + line-height: 1.5; +} +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-lg { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.form-group-lg select.form-control { + height: 46px; + line-height: 46px; +} +.form-group-lg textarea.form-control, +.form-group-lg select[multiple].form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 46px; + min-height: 38px; + padding: 11px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback, +.input-group-lg + .form-control-feedback, +.form-group-lg .form-control + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback, +.input-group-sm + .form-control-feedback, +.form-group-sm .form-control + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} +.has-error .form-control-feedback { + color: #a94442; +} +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 11px; + font-size: 18px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + font-size: 12px; + } +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #333; + text-decoration: none; +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none; +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:focus, +.btn-default.focus { + color: #333; + background-color: #e6e6e6; + border-color: #8c8c8c; +} +.btn-default:hover { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active:hover, +.btn-default.active:hover, +.open > .dropdown-toggle.btn-default:hover, +.btn-default:active:focus, +.btn-default.active:focus, +.open > .dropdown-toggle.btn-default:focus, +.btn-default:active.focus, +.btn-default.active.focus, +.open > .dropdown-toggle.btn-default.focus { + color: #333; + background-color: #d4d4d4; + border-color: #8c8c8c; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary:focus, +.btn-primary.focus { + color: #fff; + background-color: #286090; + border-color: #122b40; +} +.btn-primary:hover { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active:hover, +.btn-primary.active:hover, +.open > .dropdown-toggle.btn-primary:hover, +.btn-primary:active:focus, +.btn-primary.active:focus, +.open > .dropdown-toggle.btn-primary:focus, +.btn-primary:active.focus, +.btn-primary.active.focus, +.open > .dropdown-toggle.btn-primary.focus { + color: #fff; + background-color: #204d74; + border-color: #122b40; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus { + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary .badge { + color: #337ab7; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:focus, +.btn-success.focus { + color: #fff; + background-color: #449d44; + border-color: #255625; +} +.btn-success:hover { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active:hover, +.btn-success.active:hover, +.open > .dropdown-toggle.btn-success:hover, +.btn-success:active:focus, +.btn-success.active:focus, +.open > .dropdown-toggle.btn-success:focus, +.btn-success:active.focus, +.btn-success.active.focus, +.open > .dropdown-toggle.btn-success.focus { + color: #fff; + background-color: #398439; + border-color: #255625; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:focus, +.btn-info.focus { + color: #fff; + background-color: #31b0d5; + border-color: #1b6d85; +} +.btn-info:hover { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active:hover, +.btn-info.active:hover, +.open > .dropdown-toggle.btn-info:hover, +.btn-info:active:focus, +.btn-info.active:focus, +.open > .dropdown-toggle.btn-info:focus, +.btn-info:active.focus, +.btn-info.active.focus, +.open > .dropdown-toggle.btn-info.focus { + color: #fff; + background-color: #269abc; + border-color: #1b6d85; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:focus, +.btn-warning.focus { + color: #fff; + background-color: #ec971f; + border-color: #985f0d; +} +.btn-warning:hover { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active:hover, +.btn-warning.active:hover, +.open > .dropdown-toggle.btn-warning:hover, +.btn-warning:active:focus, +.btn-warning.active:focus, +.open > .dropdown-toggle.btn-warning:focus, +.btn-warning:active.focus, +.btn-warning.active.focus, +.open > .dropdown-toggle.btn-warning.focus { + color: #fff; + background-color: #d58512; + border-color: #985f0d; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:focus, +.btn-danger.focus { + color: #fff; + background-color: #c9302c; + border-color: #761c19; +} +.btn-danger:hover { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active:hover, +.btn-danger.active:hover, +.open > .dropdown-toggle.btn-danger:hover, +.btn-danger:active:focus, +.btn-danger.active:focus, +.open > .dropdown-toggle.btn-danger:focus, +.btn-danger:active.focus, +.btn-danger.active.focus, +.open > .dropdown-toggle.btn-danger.focus { + color: #fff; + background-color: #ac2925; + border-color: #761c19; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + color: #337ab7; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link.active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; +} +.collapse.in { + display: block; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: .35s; + -o-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + right: 0; + left: auto; +} +.dropdown-menu-left { + right: auto; + left: 0; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid \9; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn, +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn: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) { + 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 { + 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 { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + 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 { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group .form-control:focus { + z-index: 3; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.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) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + z-index: 2; + margin-left: -1px; +} +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eee; +} +.nav > li.disabled > a { + color: #777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eee; + border-color: #337ab7; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #337ab7; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-default .btn-link { + color: #777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #080808; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; +} +.breadcrumb > .active { + color: #777; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + z-index: 2; + color: #23527c; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 3; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #777; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #286090; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: #777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge, +.btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding-top: 30px; + padding-bottom: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron, +.container-fluid .jumbotron { + padding-right: 15px; + padding-left: 15px; + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border .2s ease-in-out; + -o-transition: border .2s ease-in-out; + transition: border .2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #337ab7; +} +.thumbnail .caption { + padding: 9px; + color: #333; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); +} +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-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-image: -o-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-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); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-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-image: -o-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-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); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-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-image: -o-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-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); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-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-image: -o-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-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); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-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-image: -o-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-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); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media, +.media-body { + overflow: hidden; + zoom: 1; +} +.media-body { + width: 10000px; +} +.media-object { + display: block; +} +.media-object.img-thumbnail { + max-width: none; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + padding-left: 0; + margin-bottom: 20px; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +a.list-group-item, +button.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading, +button.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +button.list-group-item:hover, +a.list-group-item:focus, +button.list-group-item:focus { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} +button.list-group-item { + width: 100%; + text-align: left; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #c7ddef; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success, +button.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading, +button.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +button.list-group-item-success:hover, +a.list-group-item-success:focus, +button.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +button.list-group-item-success.active, +a.list-group-item-success.active:hover, +button.list-group-item-success.active:hover, +a.list-group-item-success.active:focus, +button.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info, +button.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading, +button.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +button.list-group-item-info:hover, +a.list-group-item-info:focus, +button.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +button.list-group-item-info.active, +a.list-group-item-info.active:hover, +button.list-group-item-info.active:hover, +a.list-group-item-info.active:focus, +button.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning, +button.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading, +button.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +button.list-group-item-warning:hover, +a.list-group-item-warning:focus, +button.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +button.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +button.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus, +button.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger, +button.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading, +button.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +button.list-group-item-danger:hover, +a.list-group-item-danger:focus, +button.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +button.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +button.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus, +button.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.panel-title > .small > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + margin-bottom: 0; + border: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #337ab7; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; +} +.panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.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-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, .15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-style: normal; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + filter: alpha(opacity=0); + opacity: 0; + + line-break: auto; +} +.tooltip.in { + filter: alpha(opacity=90); + opacity: .9; +} +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + + line-break: auto; +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + content: ""; + border-width: 10px; +} +.popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; +} +.popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; +} +.popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; +} +.popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); +} +.popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); +} +.popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform .6s ease-in-out; + -o-transition: -o-transform .6s ease-in-out; + transition: transform .6s ease-in-out; + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + left: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + background-color: rgba(0, 0, 0, 0); + filter: alpha(opacity=50); + opacity: .5; +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + margin-top: -10px; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + font-family: serif; + line-height: 1; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; +} +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + 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; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -10px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -10px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -10px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-header:before, +.modal-header:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-header:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap.css.map */ diff --git a/themes/openplc/includes/bootstrap/css/bootstrap.min.css b/themes/openplc/includes/bootstrap/css/bootstrap.min.css new file mode 100755 index 0000000..ee9680f --- /dev/null +++ b/themes/openplc/includes/bootstrap/css/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.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-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-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-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.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{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.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{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.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{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}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;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn: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){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{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{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{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{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.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-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#fff}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:black}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-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-image:-o-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-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);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-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-image:-o-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-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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-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-image:-o-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-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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-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-image:-o-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-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)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-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-image:-o-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-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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}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:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}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:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}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:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}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:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.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-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;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;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/themes/openplc/includes/bootstrap/js/bootstrap.js b/themes/openplc/includes/bootstrap/js/bootstrap.js new file mode 100755 index 0000000..8ae571b --- /dev/null +++ b/themes/openplc/includes/bootstrap/js/bootstrap.js @@ -0,0 +1,1951 @@ +/*! + * Bootstrap v3.1.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') } + +/* ======================================================================== + * Bootstrap: transition.js v3.1.1 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd', + 'MozTransition' : 'transitionend', + 'OTransition' : 'oTransitionEnd otransitionend', + 'transition' : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false, $el = this + $(this).one($.support.transition.end, function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.1.1 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.hasClass('alert') ? $this : $this.parent() + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent.trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one($.support.transition.end, removeElement) + .emulateTransitionEnd(150) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.1.1 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if (!data.resetText) $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked') && this.$element.hasClass('active')) changed = false + else $parent.find('.active').removeClass('active') + } + if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') + } + + if (changed) this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + e.preventDefault() + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.1.1 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getActiveIndex = function () { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + + return this.$items.index(this.$active) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getActiveIndex() + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || $active[type]() + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + if ($next.hasClass('active')) return this.sliding = false + + var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid.bs.carousel', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0) + }) + .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid.bs.carousel') + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + }) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + $carousel.carousel($carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.1.1 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.transitioning = null + + if (this.options.parent) this.$parent = $(this.options.parent) + if (this.options.toggle) this.toggle() + } + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var actives = this.$parent && this.$parent.find('> .panel > .in') + + if (actives && actives.length) { + var hasData = actives.data('bs.collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing') + [dimension](0) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in') + [dimension]('auto') + this.transitioning = 0 + this.$element.trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + [dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element + [dimension](this.$element[dimension]()) + [0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse') + .removeClass('in') + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .trigger('hidden.bs.collapse') + .removeClass('collapsing') + .addClass('collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && option == 'show') option = !option + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + var target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + var $target = $(target) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if (!data || !data.transitioning) { + if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + } + + $target.collapse(option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.1.1 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle=dropdown]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $(' +{% endif %} diff --git a/themes/openplc/templates/region--footer.html.twig b/themes/openplc/templates/region--footer.html.twig new file mode 100755 index 0000000..6608e4e --- /dev/null +++ b/themes/openplc/templates/region--footer.html.twig @@ -0,0 +1,40 @@ +{# +/** + * @file + * Theme override to display a region. + * + * Available variables: + * - content: The content for this region, typically blocks. + * - attributes: HTML attributes for the region div. + * - region: The name of the region variable as defined in the theme's + * .info.yml file. + * + * @see template_preprocess_region() + */ +#} + + diff --git a/themes/openplc/templates/views-view-fields--Carousel_Images--carousel_images.html.twig b/themes/openplc/templates/views-view-fields--Carousel_Images--carousel_images.html.twig new file mode 100755 index 0000000..7d43046 --- /dev/null +++ b/themes/openplc/templates/views-view-fields--Carousel_Images--carousel_images.html.twig @@ -0,0 +1,8 @@ +
    +{% for row in content['#view'].result %} + +
  • {{ content['#view'].field['carousal_images'].value(row) }}
  • + // change field_name to the actual field machine name. + +{% endfor %} +
\ No newline at end of file -- cgit