From 27deac6457c0945fd13106b61a23683ff1cfd268 Mon Sep 17 00:00:00 2001 From: Andrew Weiss Date: Fri, 11 Aug 2017 11:22:00 -0400 Subject: [PATCH 01/43] initial 17.06 commit --- .gitignore | 162 ++++++++++++- README.md | 11 +- opencontrol.yaml | 5 +- opencontrol/components/DSS/component.yaml | 14 +- .../components/Engine-EE/component.yaml | 224 +++++++++--------- opencontrol/components/eNZi/component.yaml | 8 +- validation/inspec/FedRAMP/Moderate/README.md | 2 + .../FedRAMP/Moderate/controls/ucp_spec.rb | 19 ++ .../inspec/FedRAMP/Moderate/inspec.lock | 3 + validation/inspec/FedRAMP/Moderate/inspec.yml | 8 + .../FedRAMP/Moderate/libraries/.gitkeep | 0 .../inspec/FedRAMP/Moderate/libraries/ucp.rb | 15 ++ validation/inspec/Makefile | 1 + 13 files changed, 341 insertions(+), 131 deletions(-) create mode 100644 validation/inspec/FedRAMP/Moderate/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/controls/ucp_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/inspec.lock create mode 100644 validation/inspec/FedRAMP/Moderate/inspec.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/.gitkeep create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/ucp.rb create mode 100644 validation/inspec/Makefile diff --git a/.gitignore b/.gitignore index 9be03bd..3c1e1bf 100644 --- a/.gitignore +++ b/.gitignore @@ -208,4 +208,164 @@ jspm_packages *.tgz # Yarn Integrity file -.yarn-integrity \ No newline at end of file +.yarn-integrity + +### Ruby ### +*.gem +*.rbc +/.config +/coverage/ +/InstalledFiles +/pkg/ +/spec/reports/ +/spec/examples.txt +/test/tmp/ +/test/version_tmp/ +/tmp/ + +# Used by dotenv library to load environment variables. +# .env + +## Specific to RubyMotion: +.dat* +.repl_history +build/ +*.bridgesupport +build-iPhoneOS/ +build-iPhoneSimulator/ + +## Specific to RubyMotion (use of CocoaPods): +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +# vendor/Pods/ + +## Documentation cache and generated files: +/.yardoc/ +/_yardoc/ +/doc/ +/rdoc/ + +## Environment normalization: +/.bundle/ +/vendor/bundle +/lib/bundler/man/ + +# for a library or gem, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# Gemfile.lock +# .ruby-version +# .ruby-gemset + +# unless supporting rvm < 1.11.0 or doing something fancy, ignore this: +.rvmrc + +### RubyMine ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff: +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/dictionaries + +# Sensitive or high-churn files: +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.xml +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml + +# Gradle: +.idea/**/gradle.xml +.idea/**/libraries + +# CMake +cmake-build-debug/ + +# Mongo Explorer plugin: +.idea/**/mongoSettings.xml + +## File-based project format: +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +### RubyMine+all ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff: +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/dictionaries + +# Sensitive or high-churn files: +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.xml +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml + +# Gradle: +.idea/**/gradle.xml +.idea/**/libraries + +# CMake +cmake-build-debug/ + +# Mongo Explorer plugin: +.idea/**/mongoSettings.xml + +## File-based project format: +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +### RubyMine+all Patch ### +# Ignores the whole idea folder +# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360 + +.idea/ diff --git a/README.md b/README.md index ebb8cb8..6c2a600 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,6 @@ Docker also provides pre-built System Security Plan (SSP) templates for authoriz |Provider|Format|Baselines|Status| |--------|------|---------|------| |[Microsoft Azure Government](https://azure.microsoft.com/en-us/overview/clouds/government/)|[Azure Blueprint](https://docs.microsoft.com/en-us/azure/azure-government/documentation-government-plan-compliance) (.docx)|Moderate
High
DoD L4
DoD L5|Available
Coming Soon
Coming Soon
Coming Soon| -|[AWS GovCloud](https://aws.amazon.com/govcloud-us/)|TBD|Moderate|Coming soon| Note that even if a pre-built template for Docker EE is not available for your chosen cloud provider, you can still use the OpenControl-formatted content in this repository to generate your own SSP templates. Much of the content in this repository is identical to that which is provided in the pre-built templates. @@ -30,11 +29,11 @@ In order to meet all of the applicable security controls included in this reposi |Component Name|Folder|Version| |--------------|------|-------| -|Docker EE Engine|[`opencontrol/components/Engine-EE/`](https://github.com/docker/compliance/tree/master/opencontrol/components/Engine-EE)|17.03.0-ee| -|Docker Trusted Registry (DTR)|[`opencontrol/components/DTR/`](https://github.com/docker/compliance/tree/master/opencontrol/components/DTR)|2.2| -|Docker Security Scanning (DSS)|[`opencontrol/components/DSS/`](https://github.com/docker/compliance/tree/master/opencontrol/components/DSS)|2.2| -|Universal Control Plane (UCP)|[`opencontrol/components/UCP/`](https://github.com/docker/compliance/tree/master/opencontrol/components/UCP)|2.1| -|Authentication and Authorization Service (eNZi)|[`opencontrol/components/eNZi/`](https://github.com/docker/compliance/tree/master/opencontrol/components/eNZi)|2.1| +|Docker EE Engine|[`opencontrol/components/Engine-EE/`](https://github.com/docker/compliance/tree/master/opencontrol/components/Engine-EE)|17.06.x-ee| +|Docker Trusted Registry (DTR)|[`opencontrol/components/DTR/`](https://github.com/docker/compliance/tree/master/opencontrol/components/DTR)|2.3| +|Docker Security Scanning (DSS)|[`opencontrol/components/DSS/`](https://github.com/docker/compliance/tree/master/opencontrol/components/DSS)|2.3| +|Universal Control Plane (UCP)|[`opencontrol/components/UCP/`](https://github.com/docker/compliance/tree/master/opencontrol/components/UCP)|2.2| +|Authentication and Authorization Service (eNZi)|[`opencontrol/components/eNZi/`](https://github.com/docker/compliance/tree/master/opencontrol/components/eNZi)|2.2| > Both the UCP and DTR components leverage the eNZi authentication and authorization service component for authentication and authorization across an entire Docker Enterprise Edition cluster at the Standard and Advanced tiers. diff --git a/opencontrol.yaml b/opencontrol.yaml index 780cf80..122412d 100644 --- a/opencontrol.yaml +++ b/opencontrol.yaml @@ -5,8 +5,9 @@ metadata: Docker Enterprise Edition is an integrated solution for developers and IT operations to collaborate as part of the enterprise software supply chain. It is an enterprise-grade secure container orchestration and application - management platform built and maintained by Docker, Inc. Docker Enterprise - Edition (Advanced) is made up of five core components: Docker Enterprise + management platform built and maintained by Docker, Inc. The compliance + documentation defined by this system has been mapped to five components of + the Docker Enterprise Edition (Advanced) stack as follows: Docker Enterprise Edition Engine, Docker Trusted Registry (DTR), Universal Control Plane (UCP), integrated authentication and authorization service (eNZi) and Docker Security Scanning (DSS). diff --git a/opencontrol/components/DSS/component.yaml b/opencontrol/components/DSS/component.yaml index aa4a836..4943aa0 100644 --- a/opencontrol/components/DSS/component.yaml +++ b/opencontrol/components/DSS/component.yaml @@ -14,11 +14,12 @@ satisfies: - service provider system specific narrative: - text: | - 'To assist the orgnization in meeting the requirements of this control, the Docker Security Scanning (DSS) component of Docker Trusted Registry - (DTR) that is included with the Docker Enterprise Edition Advanced - tier can be used to scan Docker images for vulnerabilities against - known vulnerability databases. Scans can be triggered either manually - or when Docker images are pushed to DTR.' + 'To assist the orgnization in meeting the requirements of this + control, the Docker Security Scanning (DSS) component of Docker + Trusted Registry (DTR) that is included with the Docker Enterprise + Edition Advanced tier can be used to scan Docker images for + vulnerabilities against known vulnerability databases. Scans can be + triggered either manually or when Docker images are pushed to DTR.' standard_key: NIST-800-53 - control_key: RA-5 (2) @@ -35,7 +36,8 @@ satisfies: Advanced tier compiles a bill of materials (BOM) for each Docker image that it scans. DSS is also synchronized to an aggregate listing of known vulnerabilities that is compiled from both the MITRE and NVD CVE - databases. Additional information can be found at the following resources: + databases. Additional information can be found at the following + resources: - https://docs.docker.com/datacenter/dtr/2.2/guides/admin/configure/set-up-vulnerability-scans/ - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Image_Scanning' diff --git a/opencontrol/components/Engine-EE/component.yaml b/opencontrol/components/Engine-EE/component.yaml index 62eed09..3ccdba0 100644 --- a/opencontrol/components/Engine-EE/component.yaml +++ b/opencontrol/components/Engine-EE/component.yaml @@ -27,14 +27,14 @@ satisfies: narrative: - key: a text: | - To assist the organization in meeting the requirements of this + 'To assist the organization in meeting the requirements of this control, Docker Enterprise Edition can be configured to aggregate container and daemon events via a number of logging drivers. Supporting documentation can be found at the following resources: - https://docs.docker.com/engine/admin/logging/view_container_logs/ - https://docs.docker.com/engine/admin/logging/overview/ - - https://docs.docker.com/engine/admin/logging/log_tags/ + - https://docs.docker.com/engine/admin/logging/log_tags/' standard_key: NIST-800-53 - control_key: AC-4 @@ -46,12 +46,12 @@ satisfies: - configured by customer narrative: - text: | - Docker Enterprise Edition can be configured to control the flow of information - that originates from applications running in containers. Supporting - documentation can be found at the following resources: + 'Docker Enterprise Edition can be configured to control the flow of + information that originates from applications running in containers. + Supporting documentation can be found at the following resources: - https://docs.docker.com/engine/userguide/networking/ - - http://success.docker.com/Datacenter/Apply/Docker_Reference_Architecture%3A_Designing_Scalable%2C_Portable_Docker_Container_Networks + - http://success.docker.com/Datacenter/Apply/Docker_Reference_Architecture%3A_Designing_Scalable%2C_Portable_Docker_Container_Networks' standard_key: NIST-800-53 - control_key: AC-4 (8) @@ -63,7 +63,7 @@ satisfies: - configured by customer narrative: - text: | - Docker Enterprise Edition can be configured to control the flow of + 'Docker Enterprise Edition can be configured to control the flow of information that originates from applications running in containers per organization-defined security policy filters. Supporting documentation can be found at the following resources: @@ -73,8 +73,8 @@ satisfies: There are also third-party behavioral activity monitoring tools (e.g. Sysdig Falco ) that can be used - alongside Docker Enterprise Edition to satisfy this control's - requirements. + alongside Docker Enterprise Edition to satisfy this control''s + requirements.' standard_key: NIST-800-53 - control_key: AC-4 (21) @@ -86,12 +86,12 @@ satisfies: - configured by customer narrative: - text: | - Docker Enterprise Edition can be configured to separate the flow of + 'Docker Enterprise Edition can be configured to separate the flow of information that originates from applications running in containers. Supporting documentation can be found at the following resources: - https://docs.docker.com/engine/userguide/networking/ - - http://success.docker.com/Datacenter/Apply/Docker_Reference_Architecture%3A_Designing_Scalable%2C_Portable_Docker_Container_Networks + - http://success.docker.com/Datacenter/Apply/Docker_Reference_Architecture%3A_Designing_Scalable%2C_Portable_Docker_Container_Networks' standard_key: NIST-800-53 - control_key: AC-17 (1) @@ -102,9 +102,9 @@ satisfies: - service provider system specific narrative: - text: | - Docker Enterprise Edition logs and controls all local and remote + 'Docker Enterprise Edition logs and controls all local and remote access events. In addition, auditing can be configured on the - underlying operating system to meet this control. + underlying operating system to meet this control.' standard_key: NIST-800-53 - control_key: AC-17 (2) @@ -115,10 +115,10 @@ satisfies: - service provider system specific narrative: - text: | - All remote access sessions to Docker Enterprise Edition are protected + 'All remote access sessions to Docker Enterprise Edition are protected with Transport Layer Security (TLS) 1.2. In addition to this, all communication to Docker Enterprise Edition is enforced by way of - two-way mutual TLS authentication. + two-way mutual TLS authentication.' standard_key: NIST-800-53 - control_key: AC-17 (3) @@ -129,10 +129,10 @@ satisfies: - service provider system specific narrative: - text: | - A combination of managed load balancers, firewalls and access control + 'A combination of managed load balancers, firewalls and access control lists, and virtual networking resources can be used to ensure traffic - destined for Docker Enterprise Edition is routed through managed network access - control points. + destined for Docker Enterprise Edition is routed through managed + network access control points.' standard_key: NIST-800-53 - control_key: AC-17 (9) @@ -143,13 +143,13 @@ satisfies: - configured by customer narrative: - text: | - Built-in firewall technology in Docker Enterprise Edition's underlying - operating system can be used to force the disconnection of remote - connections to the host. In addition, Docker Enterprise Edition provides the - option to pause or drain a node in the cluster, which subsequently - stops and/or removes sessions to the node. Individual services and/or - applications running on Docker Enterprise Edition can also be stopped and/or - removed. + 'Built-in firewall technology in Docker Enterprise Edition's + underlying operating system can be used to force the disconnection of + remote connections to the host. In addition, Docker Enterprise Edition + provides the option to pause or drain a node in the cluster, which + subsequently stops and/or removes sessions to the node. Individual + services and/or applications running on Docker Enterprise Edition can + also be stopped and/or removed.' standard_key: NIST-800-53 - control_key: AU-2 @@ -161,7 +161,7 @@ satisfies: narrative: - key: a text: | - Both Universal Control Plane and Docker Trusted Registry backend + 'Both Universal Control Plane and Docker Trusted Registry backend service containers, all of which reside on Docker Enterprise Edition, log all of the event types indicated by this control (as explained by their component narratives). These and other application containers @@ -169,7 +169,7 @@ satisfies: via an appropriate Docker logging driver. Instructions for configuring logging drivers can be found at the following resource: - - https://docs.docker.com/engine/admin/logging/overview/ + - https://docs.docker.com/engine/admin/logging/overview/' standard_key: NIST-800-53 - control_key: AU-3 @@ -180,8 +180,8 @@ satisfies: - service provider system specific narrative: - text: | - Both Universal Control Plane and Docker Trusted Registry are - pre-configured to take advantage of Docker Enterprise Edition's + 'Both Universal Control Plane and Docker Trusted Registry are + pre-configured to take advantage of Docker Enterprise Edition''s built-in logging mechanisms. A sample audit event recorded by Docker Enterprise Edition has been provided below: @@ -192,7 +192,7 @@ satisfies: Additional documentation can be referenced at the following resource: - - https://docs.docker.com/engine/admin/logging/overview/ + - https://docs.docker.com/engine/admin/logging/overview/' standard_key: NIST-800-53 - control_key: AU-3 (1) @@ -203,13 +203,13 @@ satisfies: - service provider system specific narrative: - text: | - Docker Enterprise Edition can be configured with various logging + 'Docker Enterprise Edition can be configured with various logging drivers to send audit events to an external logging stack. The logging stack can subsequently be used to interpolate the information defined by this control from the logged audit records. Additional documentation can be found at the following resource: - - https://docs.docker.com/engine/admin/logging/overview/ + - https://docs.docker.com/engine/admin/logging/overview/' standard_key: NIST-800-53 - control_key: AU-3 (2) @@ -220,13 +220,13 @@ satisfies: - service provider system specific narrative: - text: | - Docker Enterprise Edition can be configured with various logging + 'Docker Enterprise Edition can be configured with various logging drivers to send audit events to an external logging stack. The logging stack can subsequently be used to interpolate the information defined by this control from the logged audit records. Additional documentation can be found at the following resource: - - https://docs.docker.com/engine/admin/logging/overview/ + - https://docs.docker.com/engine/admin/logging/overview/' standard_key: NIST-800-53 - control_key: AU-5 @@ -237,14 +237,14 @@ satisfies: - service provider system specific narrative: - text: | - Docker Enterprise Edition can be configured with various logging + 'Docker Enterprise Edition can be configured with various logging drivers to send audit events to an external logging stack. The logging stack can be used to interpolate the information defined by this control and also be configured to alert on any audit processing failures. Additional information can be found at the following resources: - - https://docs.docker.com/engine/admin/logging/overview/ + - https://docs.docker.com/engine/admin/logging/overview/' standard_key: NIST-800-53 - control_key: AU-5 (1) @@ -255,13 +255,13 @@ satisfies: - service provider system specific narrative: - text: | - Docker Enterprise Edition can be configured with various logging + 'Docker Enterprise Edition can be configured with various logging drivers to send audit events to an external logging stack. The logging stack can subsequently be configured to warn the organization when the allocated log storage is full. Additional information can be found at the following resources: - - https://docs.docker.com/engine/admin/logging/overview/ + - https://docs.docker.com/engine/admin/logging/overview/' standard_key: NIST-800-53 - control_key: AU-5 (2) @@ -272,13 +272,13 @@ satisfies: - service provider system specific narrative: - text: | - Docker Enterprise Edition can be configured with various logging + 'Docker Enterprise Edition can be configured with various logging drivers to send audit events to an external logging stack. The logging stack can subsequently be configured to warn the organization when audit log failures occur. Additional information can be found at the following resources: - - https://docs.docker.com/engine/admin/logging/overview/ + - https://docs.docker.com/engine/admin/logging/overview/' standard_key: NIST-800-53 - control_key: AU-6 (4) @@ -289,13 +289,13 @@ satisfies: - service provider system specific narrative: - text: | - Docker Enterprise Edition can be configured with various logging + 'Docker Enterprise Edition can be configured with various logging drivers to send audit events to an external logging stack. The organization can subsequently centrally review and analyze all of the Docker EE audit records. Additional information can be found at the following resources: - - https://docs.docker.com/engine/admin/logging/overview/ + - https://docs.docker.com/engine/admin/logging/overview/' standard_key: NIST-800-53 - control_key: AU-7 @@ -608,14 +608,14 @@ satisfies: - service provider system specific narrative: - text: | - The CIS Docker Benchmark can be used as a baseline for securing Docker + 'The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the configurmation management requirements of this control. Additional information can be found at the following resources: - https://benchmarks.cisecurity.org/tools2/docker/CIS_Docker_1.13.0_Benchmark_v1.0.0.pdf - http://www.cisecurity.org/critical-controls/tools/CISControlsv4_MaptoNIST800-53rev4.xlsx - - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark + - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark' standard_key: NIST-800-53 - control_key: CM-2 (2) @@ -626,8 +626,8 @@ satisfies: - service provider system specific narrative: - text: | - The CIS Docker Benchmark can be used as a baseline for securing Docker - Enterprise Edition and for helping the organization meet the + 'The CIS Docker Benchmark can be used as a baseline for securing + Docker Enterprise Edition and for helping the organization meet the configurmation management requirements of this control. CIS regularly updates their benchmark to reflect the latest updates in the stable release of Docker Engine. Various configuration management tools such @@ -638,7 +638,7 @@ satisfies: - https://benchmarks.cisecurity.org/tools2/docker/CIS_Docker_1.13.0_Benchmark_v1.0.0.pdf - http://www.cisecurity.org/critical-controls/tools/CISControlsv4_MaptoNIST800-53rev4.xlsx - - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark + - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark' standard_key: NIST-800-53 - control_key: CM-2 (3) @@ -649,7 +649,7 @@ satisfies: - service provider system specific narrative: - text: | - The CIS Docker Benchmark can be used as a baseline for securing + 'The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the configurmation management requirements of this control. CIS regularly updates their benchmark to reflect the latest updates in the stable @@ -662,7 +662,7 @@ satisfies: - https://benchmarks.cisecurity.org/tools2/docker/CIS_Docker_1.13.0_Benchmark_v1.0.0.pdf - http://www.cisecurity.org/critical-controls/tools/CISControlsv4_MaptoNIST800-53rev4.xlsx - - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark + - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark' standard_key: NIST-800-53 - control_key: CM-3 @@ -673,14 +673,14 @@ satisfies: - service provider system specific narrative: - text: | - The CIS Docker Benchmark can be used as a baseline for securing + 'The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the configurmation management change control requirements of this control. Additional information can be found at the following resources: - https://benchmarks.cisecurity.org/tools2/docker/CIS_Docker_1.13.0_Benchmark_v1.0.0.pdf - http://www.cisecurity.org/critical-controls/tools/CISControlsv4_MaptoNIST800-53rev4.xlsx - - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark + - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark' standard_key: NIST-800-53 - control_key: CM-3 (1) @@ -691,7 +691,7 @@ satisfies: - service provider system specific narrative: - text: | - The CIS Docker Benchmark can be used as a baseline for securing + 'The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the configurmation management change control requirements of this control. Various configuration management tools such as Inspec @@ -702,7 +702,7 @@ satisfies: - https://benchmarks.cisecurity.org/tools2/docker/CIS_Docker_1.13.0_Benchmark_v1.0.0.pdf - http://www.cisecurity.org/critical-controls/tools/CISControlsv4_MaptoNIST800-53rev4.xlsx - - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark + - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark' standard_key: NIST-800-53 - control_key: CM-3 (2) @@ -713,7 +713,7 @@ satisfies: - service provider system specific narrative: - text: | - The CIS Docker Benchmark can be used as a baseline for securing + 'The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the configurmation management change control requirements of this control. Various configuration management tools such as Inspec @@ -724,7 +724,7 @@ satisfies: - https://benchmarks.cisecurity.org/tools2/docker/CIS_Docker_1.13.0_Benchmark_v1.0.0.pdf - http://www.cisecurity.org/critical-controls/tools/CISControlsv4_MaptoNIST800-53rev4.xlsx - - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark + - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark' standard_key: NIST-800-53 - control_key: CM-3 (6) @@ -735,14 +735,14 @@ satisfies: - service provider system specific narrative: - text: | - The CIS Docker Benchmark can be used as a baseline for securing + 'The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the cryptography management requirements of this control. Additional information can be found at the following resources: - https://benchmarks.cisecurity.org/tools2/docker/CIS_Docker_1.13.0_Benchmark_v1.0.0.pdf - http://www.cisecurity.org/critical-controls/tools/CISControlsv4_MaptoNIST800-53rev4.xlsx - - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark + - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark' standard_key: NIST-800-53 - control_key: CM-5 (2) @@ -753,14 +753,14 @@ satisfies: - service provider system specific narrative: - text: | - The CIS Docker Benchmark can be used as a baseline for securing + 'The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the system change requirements of this control. Additional information can be found at the following resources: - https://benchmarks.cisecurity.org/tools2/docker/CIS_Docker_1.13.0_Benchmark_v1.0.0.pdf - http://www.cisecurity.org/critical-controls/tools/CISControlsv4_MaptoNIST800-53rev4.xlsx - - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark + - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark' standard_key: NIST-800-53 - control_key: CM-5 (3) @@ -771,8 +771,8 @@ satisfies: - service provider system specific narrative: - text: | - Before installing Docker Enterprise Edition, ensure that your - supporting Linux operating system's packager manager supports package + 'Before installing Docker Enterprise Edition, ensure that your + supporting Linux operating system''s packager manager supports package signature verification and that it is enabled. It is also required that you import the Docker public key for CS packages so as to retrieve the validated and signed package from Docker, Inc. Refer to @@ -789,7 +789,7 @@ satisfies: use of signed Docker images. Additional information can be found at the following resources: - - https://docs.docker.com/engine/security/trust/content_trust/ + - https://docs.docker.com/engine/security/trust/content_trust/' standard_key: NIST-800-53 - control_key: CM-6 (1) @@ -800,10 +800,10 @@ satisfies: - service provider system specific narrative: - text: | - The organization is responsible for meeting the requirements of this + 'The organization is responsible for meeting the requirements of this control. The organization can incorporate the use of an external configuration management system to meet the requirements of this - control. + control.' standard_key: NIST-800-53 - control_key: CM-7 (2) @@ -814,11 +814,11 @@ satisfies: - service provider system specific narrative: - text: | - In order to restrict which Docker images can be used to deploy - applications to Docker Enterprise Edition, the organization must define a list - of allowed base Docker images and make them available via Docker - Trusted Registry. The organization must also prevent users from being - able to pull Docker images from untrusted sources. + 'In order to restrict which Docker images can be used to deploy + applications to Docker Enterprise Edition, the organization must + define a list of allowed base Docker images and make them available + via Docker Trusted Registry. The organization must also prevent users + from being able to pull Docker images from untrusted sources.' standard_key: NIST-800-53 - control_key: CM-7 (5) @@ -829,13 +829,13 @@ satisfies: - service provider system specific narrative: - text: | - The organization is responsible for meeting the requirements of this + 'The organization is responsible for meeting the requirements of this control. To assist with these requirements and in order to restrict - which Docker images can be used to deploy applications to CS Docker + which Docker images can be used to deploy applications to Docker EE Engine, the organization must define a list of allowed base Docker images and make them available via Docker Trusted Registry. The organization must also prevent users from being able to pull Docker - images from untrusted sources. + images from untrusted sources.' standard_key: NIST-800-53 - control_key: CM-9 @@ -846,14 +846,14 @@ satisfies: - service provider system specific narrative: - text: | - The CIS Docker Benchmark can be used as a baseline for securing + 'The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the configuration management plan requirements of this control. Additional information can be found at the following resources: - https://benchmarks.cisecurity.org/tools2/docker/CIS_Docker_1.13.0_Benchmark_v1.0.0.pdf - http://www.cisecurity.org/critical-controls/tools/CISControlsv4_MaptoNIST800-53rev4.xlsx - - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark + - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Controls_from_the_CIS_Benchmark' standard_key: NIST-800-53 - control_key: IA-3 @@ -864,10 +864,10 @@ satisfies: - service provider system specific narrative: - text: | - In order for other CS Engine nodes to be able to join a cluster - managed by Universal Control Plane, they must be identified and - authenticated via either a manager or worker token. Use of the token - includes trust on first use mutual TLS. + 'In order for other Docker EE engine nodes to be able to join a + cluster managed by Universal Control Plane, they must be identified + and authenticated via either a manager or worker token. Use of the + token includes trust on first use mutual TLS.' standard_key: NIST-800-53 - control_key: SA-10 (1) @@ -878,14 +878,14 @@ satisfies: - service provider system specific narrative: - text: | - Docker Content Trust gives you the ability to verify both the + 'Docker Content Trust gives you the ability to verify both the integrity and the publisher of all the data received from a Docker Trusted Registry over any channel. It allows operations with a remote DTR instance to enforce client-side signing and verification of image tags. It provides for the ability to use digital signatures for data sent to and receive from remote DTR instances. These signatures allow client-side verification of the integrity and publisher of specific - image tags. + image tags.' standard_key: NIST-800-53 - control_key: SC-7 (20) @@ -896,7 +896,7 @@ satisfies: - service provider system specific narrative: - text: | - Docker Enterprise Edition is designed to run application containers + 'Docker Enterprise Edition is designed to run application containers whose content can be completely isolated/segregated from other application containers within the same node/cluster. This is accomplished by way of Linux kernel primitives and various security @@ -905,7 +905,7 @@ satisfies: - https://docs.docker.com/engine/security/security/ - https://docs.docker.com/engine/userguide/networking/overlay-security-model/ - - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Engine_and_Node_Security + - https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Securing_Docker_EE_and_Security_Best_Practices#Engine_and_Node_Security' standard_key: NIST-800-53 - control_key: SC-12 (2) @@ -916,11 +916,11 @@ satisfies: - service provider system specific narrative: - text: | - Docker Enterprise Edition can be installed on the following operating systems: - CentOS 7.1+, Red Hat Enterprise Linux 7.0+, Ubuntu 14.04 LTS+, and - SUSE Linux Enterprise 12+. In order to meet the requirements of this - control, reference the chosen operating system's documentation to - ensure it is configured in FIPS mode. + 'Docker Enterprise Edition can be installed on the following operating + systems: CentOS 7.1+, Red Hat Enterprise Linux 7.0+, Ubuntu 14.04 + LTS+, SUSE Linux Enterprise 12+ and Windows Server 2016+. In order to + meet the requirements of this control, reference the chosen operating + system's documentation to ensure it is configured in FIPS mode.' standard_key: NIST-800-53 - control_key: SC-13 @@ -931,11 +931,11 @@ satisfies: - service provider system specific narrative: - text: | - Docker Enterprise Edition can be installed on the following operating systems: - CentOS 7.1+, Red Hat Enterprise Linux 7.0+, Ubuntu 14.04 LTS+, and - SUSE Linux Enterprise 12+. In order to meet the requirements of this - control, reference the chosen operating system's documentation to - ensure it is configured in FIPS mode. + 'Docker Enterprise Edition can be installed on the following operating + systems: CentOS 7.1+, Red Hat Enterprise Linux 7.0+, Ubuntu 14.04 + LTS+, SUSE Linux Enterprise 12+ and Windows Server 2016+. In order to + meet the requirements of this control, reference the chosen operating + system's documentation to ensure it is configured in FIPS mode.' standard_key: NIST-800-53 - control_key: SC-23 @@ -946,10 +946,10 @@ satisfies: - service provider system specific narrative: - text: | - All remote access sessions to Docker Enterprise Edition are protected with - Transport Layer Security (TLS) 1.2 with the AES GCM cipher. In - addition to this, all communication to and between Docker Enterprise Editions - is enforced by way of two-way mutual TLS authentication. + 'All remote access sessions to Docker Enterprise Edition are protected + with Transport Layer Security (TLS) 1.2 with the AES GCM cipher. In + addition to this, all communication to and between Docker Enterprise + Editions is enforced by way of two-way mutual TLS authentication.' standard_key: NIST-800-53 - control_key: SC-28 @@ -960,13 +960,13 @@ satisfies: - service provider system specific narrative: - text: | - All remote access sessions to Docker Enterprise Edition are protected + 'All remote access sessions to Docker Enterprise Edition are protected with Transport Layer Security (TLS) 1.2 with the AES GCM cipher. In addition to this, all communication to/from and between Docker Enterprise Edition nodes is enforced by way of two-way mutual TLS authentication. All Swarm Mode manager nodes in a Docker Enterprise Edition cluster store state metadata and user secrets encrypted at - rest using the AES GCM cipher. + rest using the AES GCM cipher.' standard_key: NIST-800-53 - control_key: SC-28 (1) @@ -977,10 +977,10 @@ satisfies: - service provider system specific narrative: - text: | - All remote access sessions to Docker Enterprise Edition are protected with - Transport Layer Security (TLS) 1.2 with the AES GCM cipher. In - addition to this, all communication to and between Docker Enterprise Editions - is enforced by way of two-way mutual TLS authentication. + 'All remote access sessions to Docker Enterprise Edition are protected + with Transport Layer Security (TLS) 1.2 with the AES GCM cipher. In + addition to this, all communication to and between Docker Enterprise + Editions is enforced by way of two-way mutual TLS authentication.' standard_key: NIST-800-53 - control_key: SI-3 (2) @@ -991,11 +991,11 @@ satisfies: - service provider system specific narrative: - text: | - Docker Enterprise Edition packages for supported underlying operating + 'Docker Enterprise Edition packages for supported underlying operating systems can only be obtained from Docker, Inc. The Docker EE repositories from which Docker EE packages are obtained are protected with official GPG keys. Each Docker package is also validated with a - signature definition. + signature definition.' standard_key: NIST-800-53 - control_key: SI-11 @@ -1006,10 +1006,10 @@ satisfies: - service provider system specific narrative: - text: | - All error messages generated via the logging mechanisms of the Docker + 'All error messages generated via the logging mechanisms of the Docker Enterprise Edition engine are displayed such that they meet the requirements of this control. Only users that are authorized the - appropriate level of access can view these error messages. + appropriate level of access can view these error messages.' standard_key: NIST-800-53 - control_key: SI-16 @@ -1020,10 +1020,10 @@ satisfies: - configured by customer narrative: - text: | - Docker Enterprise Edition can be installed on the following operating systems: - CentOS 7.1+, Red Hat Enterprise Linux 7.0+, Ubuntu 14.04 LTS+, and - SUSE Linux Enterprise 12+. In order to meet the requirements of this - control, reference the chosen operating system's security - documentation for information regarding the protection of memory from - unauthorized code execution. + 'Docker Enterprise Edition can be installed on the following operating + systems: CentOS 7.1+, Red Hat Enterprise Linux 7.0+, Ubuntu 14.04 + LTS+, SUSE Linux Enterprise 12+ and Windows Server 2016+. In order to + meet the requirements of this control, reference the chosen operating + system's security documentation for information regarding the + protection of memory from unauthorized code execution.' standard_key: NIST-800-53 diff --git a/opencontrol/components/eNZi/component.yaml b/opencontrol/components/eNZi/component.yaml index b70a6e1..9a35e4d 100644 --- a/opencontrol/components/eNZi/component.yaml +++ b/opencontrol/components/eNZi/component.yaml @@ -14,9 +14,9 @@ satisfies: - service provider system specific narrative: - text: | - To assist the organization in meeting the requirements of - this control, one can control which users and teams are allowed to - create and manipulate Docker Enterprise Edition resources. By default, no one + 'To assist the organization in meeting the requirements of this + control, one can control which users and teams are allowed to create + and manipulate Docker Enterprise Edition resources. By default, no one can make changes to the cluster. Permissions can be granted and managed to enforce fine-grained access control. Supporting documentation can found at the following resources: @@ -24,7 +24,7 @@ satisfies: - https://docs.docker.com/datacenter/ucp/2.1/guides/admin/manage-users/ - https://docs.docker.com/datacenter/ucp/2.1/guides/admin/manage-users/permission-levels/ - https://docs.docker.com/datacenter/dtr/2.2/guides/admin/manage-users/ - - https://docs.docker.com/datacenter/dtr/2.2/guides/admin/manage-users/permission-levels/ + - https://docs.docker.com/datacenter/dtr/2.2/guides/admin/manage-users/permission-levels/' standard_key: NIST-800-53 - control_key: AC-2 diff --git a/validation/inspec/FedRAMP/Moderate/README.md b/validation/inspec/FedRAMP/Moderate/README.md new file mode 100644 index 0000000..3bba2c8 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/README.md @@ -0,0 +1,2 @@ +# Docker EE FedRAMP Moderate InSpec Profile + diff --git a/validation/inspec/FedRAMP/Moderate/controls/ucp_spec.rb b/validation/inspec/FedRAMP/Moderate/controls/ucp_spec.rb new file mode 100644 index 0000000..bc10de3 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/controls/ucp_spec.rb @@ -0,0 +1,19 @@ +# encoding: utf-8 +# copyright: 2015, The Authors + +title 'Universal Control Plane' + +# you can also use plain tests +describe file('/tmp') do + it { should be_directory } +end + +# you add controls here +control 'tmp-1.0' do # A unique ID for this control + impact 0.7 # The criticality, if this control fails. + title 'Create /tmp directory' # A human-readable title + desc 'An optional description...' + describe file('/tmp') do # The actual test + it { should be_directory } + end +end diff --git a/validation/inspec/FedRAMP/Moderate/inspec.lock b/validation/inspec/FedRAMP/Moderate/inspec.lock new file mode 100644 index 0000000..e687b9b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/inspec.lock @@ -0,0 +1,3 @@ +--- +lockfile_version: 1 +depends: [] diff --git a/validation/inspec/FedRAMP/Moderate/inspec.yml b/validation/inspec/FedRAMP/Moderate/inspec.yml new file mode 100644 index 0000000..271a892 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/inspec.yml @@ -0,0 +1,8 @@ +name: Docker EE FedRAMP Moderate +title: D +maintainer: Andrew Weiss +copyright: Docker, Inc +copyright_email: compliance@docker.com +license: CC0-1.0 +summary: Docker EE FedRAMP Moderate InSpec Profile +version: 0.1.0 diff --git a/validation/inspec/FedRAMP/Moderate/libraries/.gitkeep b/validation/inspec/FedRAMP/Moderate/libraries/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/validation/inspec/FedRAMP/Moderate/libraries/ucp.rb b/validation/inspec/FedRAMP/Moderate/libraries/ucp.rb new file mode 100644 index 0000000..4f09421 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/ucp.rb @@ -0,0 +1,15 @@ +class UCP < Inspec.Resource(1) + name 'ucp' + + desc " + Universal Control Plane (UCP) API resource + " + + example " + describe ucp('https://ucp_url') do + its('version') { should eq ('1.0') } + end + " + + +end \ No newline at end of file diff --git a/validation/inspec/Makefile b/validation/inspec/Makefile new file mode 100644 index 0000000..7c6223c --- /dev/null +++ b/validation/inspec/Makefile @@ -0,0 +1 @@ +.PHONY: inspec vendor From ac3b154b3f6cfbfef895c7c75ea164c3ef609fc2 Mon Sep 17 00:00:00 2001 From: Andrew Weiss Date: Sat, 12 Aug 2017 20:41:02 -0400 Subject: [PATCH 02/43] update inspec work --- .gitignore | 3 + .../inspec/FedRAMP/Moderate/.dockerignore | 4 + validation/inspec/FedRAMP/Moderate/Dockerfile | 7 + .../FedRAMP/Moderate/controls/ucp_spec.rb | 24 +- validation/inspec/FedRAMP/Moderate/inspec.yml | 2 +- .../FedRAMP/Moderate/libraries/.bundle/config | 4 + .../inspec/FedRAMP/Moderate/libraries/Gemfile | 3 + .../FedRAMP/Moderate/libraries/Gemfile.lock | 139 + .../FedRAMP/Moderate/libraries/inspec.lock | 3 + .../inspec/FedRAMP/Moderate/libraries/ucp.rb | 44 +- .../vendor/bundle/ruby/2.4.0/bin/coderay | 22 + .../vendor/bundle/ruby/2.4.0/bin/erubis | 22 + .../vendor/bundle/ruby/2.4.0/bin/htmldiff | 24 + .../vendor/bundle/ruby/2.4.0/bin/httpclient | 22 + .../vendor/bundle/ruby/2.4.0/bin/inspec | 22 + .../vendor/bundle/ruby/2.4.0/bin/ldiff | 24 + .../vendor/bundle/ruby/2.4.0/bin/pry | 22 + .../vendor/bundle/ruby/2.4.0/bin/rake | 22 + .../vendor/bundle/ruby/2.4.0/bin/rspec | 22 + .../vendor/bundle/ruby/2.4.0/bin/rwinrm | 22 + .../vendor/bundle/ruby/2.4.0/bin/rwinrmcp | 22 + .../vendor/bundle/ruby/2.4.0/bin/thor | 22 + .../2.4.0/ffi-1.9.18/ffi_c.bundle | Bin 0 -> 180932 bytes .../2.4.0/ffi-1.9.18/gem.build_complete | 0 .../http_parser.rb-0.6.0/gem.build_complete | 0 .../ruby_http_parser.bundle | Bin 0 -> 40768 bytes .../2.4.0/rainbow-2.2.2/gem.build_complete | 0 .../2.4.0/unf_ext-0.0.7.4/gem.build_complete | 0 .../2.4.0/unf_ext-0.0.7.4/unf_ext.bundle | Bin 0 -> 425732 bytes .../2.4.0/gems/addressable-2.5.1/CHANGELOG.md | 210 + .../ruby/2.4.0/gems/addressable-2.5.1/Gemfile | 32 + .../2.4.0/gems/addressable-2.5.1/LICENSE.txt | 202 + .../2.4.0/gems/addressable-2.5.1/README.md | 121 + .../2.4.0/gems/addressable-2.5.1/Rakefile | 32 + .../gems/addressable-2.5.1/data/unicode.data | Bin 0 -> 115740 bytes .../spec/addressable/idna_spec.rb | 286 + .../spec/addressable/net_http_compat_spec.rb | 28 + .../addressable/rack_mount_compat_spec.rb | 104 + .../spec/addressable/security_spec.rb | 57 + .../spec/addressable/template_spec.rb | 1419 + .../spec/addressable/uri_spec.rb | 6464 + .../addressable-2.5.1/spec/spec_helper.rb | 21 + .../gems/addressable-2.5.1/tasks/clobber.rake | 2 + .../gems/addressable-2.5.1/tasks/gem.rake | 91 + .../gems/addressable-2.5.1/tasks/git.rake | 45 + .../gems/addressable-2.5.1/tasks/metrics.rake | 22 + .../gems/addressable-2.5.1/tasks/rspec.rake | 21 + .../gems/addressable-2.5.1/tasks/yard.rake | 27 + .../ruby/2.4.0/gems/blankslate-2.1.2.4/README | 31 + .../2.4.0/gems/blankslate-2.1.2.4/Rakefile | 13 + .../2.4.0/gems/blankslate-2.1.2.4/VERSION | 1 + .../blankslate-2.1.2.4/blankslate.gemspec | 22 + .../spec/blankslate_spec.rb | 39 + .../ruby/2.4.0/gems/builder-3.2.3/CHANGES | 107 + .../ruby/2.4.0/gems/builder-3.2.3/MIT-LICENSE | 20 + .../ruby/2.4.0/gems/builder-3.2.3/README.md | 258 + .../ruby/2.4.0/gems/builder-3.2.3/Rakefile | 195 + .../2.4.0/gems/builder-3.2.3/doc/jamis.rb | 591 + .../doc/releases/builder-1.2.4.rdoc | 31 + .../doc/releases/builder-2.0.0.rdoc | 46 + .../doc/releases/builder-2.1.1.rdoc | 58 + .../gems/builder-3.2.3/rakelib/publish.rake | 20 + .../gems/builder-3.2.3/rakelib/tags.rake | 62 + .../gems/builder-3.2.3/rakelib/testing.rake | 7 + .../2.4.0/gems/builder-3.2.3/test/helper.rb | 12 + .../gems/builder-3.2.3/test/performance.rb | 41 + .../2.4.0/gems/builder-3.2.3/test/preload.rb | 39 + .../builder-3.2.3/test/test_blankslate.rb | 213 + .../builder-3.2.3/test/test_eventbuilder.rb | 150 + .../builder-3.2.3/test/test_markupbuilder.rb | 611 + .../builder-3.2.3/test/test_method_caching.rb | 62 + .../builder-3.2.3/test/test_namecollision.rb | 39 + .../gems/builder-3.2.3/test/test_xchar.rb | 78 + .../gems/coderay-1.1.1/README_INDEX.rdoc | 123 + .../ruby/2.4.0/gems/coderay-1.1.1/Rakefile | 37 + .../ruby/2.4.0/gems/coderay-1.1.1/bin/coderay | 215 + .../coderay-1.1.1/test/functional/basic.rb | 318 + .../coderay-1.1.1/test/functional/examples.rb | 129 + .../test/functional/for_redcloth.rb | 78 + .../coderay-1.1.1/test/functional/suite.rb | 15 + .../ruby/2.4.0/gems/diff-lcs-1.3/.rspec | 1 + .../gems/diff-lcs-1.3/Code-of-Conduct.md | 74 + .../2.4.0/gems/diff-lcs-1.3/Contributing.md | 83 + .../ruby/2.4.0/gems/diff-lcs-1.3/History.md | 220 + .../ruby/2.4.0/gems/diff-lcs-1.3/License.md | 39 + .../ruby/2.4.0/gems/diff-lcs-1.3/Manifest.txt | 37 + .../ruby/2.4.0/gems/diff-lcs-1.3/README.rdoc | 84 + .../ruby/2.4.0/gems/diff-lcs-1.3/Rakefile | 57 + .../gems/diff-lcs-1.3/autotest/discover.rb | 1 + .../ruby/2.4.0/gems/diff-lcs-1.3/bin/htmldiff | 32 + .../ruby/2.4.0/gems/diff-lcs-1.3/bin/ldiff | 6 + .../2.4.0/gems/diff-lcs-1.3/docs/COPYING.txt | 339 + .../2.4.0/gems/diff-lcs-1.3/docs/artistic.txt | 127 + .../gems/diff-lcs-1.3/spec/change_spec.rb | 65 + .../2.4.0/gems/diff-lcs-1.3/spec/diff_spec.rb | 47 + .../gems/diff-lcs-1.3/spec/fixtures/ds1.csv | 50 + .../gems/diff-lcs-1.3/spec/fixtures/ds2.csv | 51 + .../2.4.0/gems/diff-lcs-1.3/spec/hunk_spec.rb | 72 + .../gems/diff-lcs-1.3/spec/issues_spec.rb | 49 + .../2.4.0/gems/diff-lcs-1.3/spec/lcs_spec.rb | 56 + .../gems/diff-lcs-1.3/spec/ldiff_spec.rb | 47 + .../gems/diff-lcs-1.3/spec/patch_spec.rb | 422 + .../gems/diff-lcs-1.3/spec/sdiff_spec.rb | 214 + .../gems/diff-lcs-1.3/spec/spec_helper.rb | 321 + .../spec/traverse_balanced_spec.rb | 310 + .../spec/traverse_sequences_spec.rb | 139 + .../gems/domain_name-0.5.20170404/.document | 5 + .../gems/domain_name-0.5.20170404/.gitignore | 17 + .../gems/domain_name-0.5.20170404/.travis.yml | 21 + .../domain_name-0.5.20170404/CHANGELOG.md | 209 + .../gems/domain_name-0.5.20170404/Gemfile | 4 + .../gems/domain_name-0.5.20170404/LICENSE.txt | 78 + .../gems/domain_name-0.5.20170404/README.md | 67 + .../gems/domain_name-0.5.20170404/Rakefile | 88 + .../data/public_suffix_list.dat | 11903 ++ .../domain_name.gemspec | 36 + .../domain_name-0.5.20170404/test/helper.rb | 17 + .../test/test_domain_name-punycode.rb | 97 + .../test/test_domain_name.rb | 317 + .../tool/gen_etld_data.rb | 63 + .../ruby/2.4.0/gems/erubis-2.7.0/CHANGES.txt | 828 + .../ruby/2.4.0/gems/erubis-2.7.0/MIT-LICENSE | 20 + .../ruby/2.4.0/gems/erubis-2.7.0/README.txt | 102 + .../gems/erubis-2.7.0/benchmark/Makefile | 6 + .../gems/erubis-2.7.0/benchmark/bench.rb | 313 + .../erubis-2.7.0/benchmark/bench_context.yaml | 141 + .../benchmark/templates/_footer.html | 4 + .../benchmark/templates/_header.html | 52 + .../benchmark/templates/bench_erb.rhtml | 29 + .../benchmark/templates/bench_erubis.rhtml | 29 + .../benchmark/templates/bench_eruby.rhtml | 29 + .../ruby/2.4.0/gems/erubis-2.7.0/bin/erubis | 10 + .../2.4.0/gems/erubis-2.7.0/contrib/erubis | 3468 + .../gems/erubis-2.7.0/contrib/erubis-run.rb | 132 + .../gems/erubis-2.7.0/contrib/inline-require | 179 + .../doc-api/classes/ActionView.html | 105 + .../TemplateHandlers/ErubisHandler.html | 209 + .../erubis-2.7.0/doc-api/classes/ERB.html | 101 + .../erubis-2.7.0/doc-api/classes/Erubis.html | 362 + .../classes/Erubis/ArrayBufferEnhancer.html | 175 + .../classes/Erubis/ArrayBufferEruby.html | 120 + .../doc-api/classes/Erubis/ArrayEnhancer.html | 174 + .../doc-api/classes/Erubis/ArrayEruby.html | 120 + .../doc-api/classes/Erubis/Basic.html | 112 + .../classes/Erubis/Basic/Converter.html | 327 + .../doc-api/classes/Erubis/Basic/Engine.html | 130 + .../classes/Erubis/BiPatternEnhancer.html | 215 + .../classes/Erubis/BiPatternEruby.html | 120 + .../doc-api/classes/Erubis/CGenerator.html | 386 + .../classes/Erubis/CommandOptionError.html | 113 + .../doc-api/classes/Erubis/Context.html | 344 + .../doc-api/classes/Erubis/Converter.html | 283 + .../doc-api/classes/Erubis/CppGenerator.html | 382 + .../classes/Erubis/DeleteIndentEnhancer.html | 150 + .../classes/Erubis/DeleteIndentEruby.html | 120 + .../doc-api/classes/Erubis/Ec.html | 126 + .../doc-api/classes/Erubis/Ecpp.html | 126 + .../doc-api/classes/Erubis/Ejava.html | 126 + .../doc-api/classes/Erubis/Ejavascript.html | 126 + .../doc-api/classes/Erubis/Engine.html | 305 + .../doc-api/classes/Erubis/Eperl.html | 126 + .../doc-api/classes/Erubis/Ephp.html | 126 + .../classes/Erubis/ErboutEnhancer.html | 175 + .../doc-api/classes/Erubis/ErboutEruby.html | 120 + .../doc-api/classes/Erubis/ErubisError.html | 117 + .../doc-api/classes/Erubis/Eruby.html | 132 + .../classes/Erubis/EscapeEnhancer.html | 165 + .../doc-api/classes/Erubis/EscapedEc.html | 120 + .../doc-api/classes/Erubis/EscapedEcpp.html | 120 + .../doc-api/classes/Erubis/EscapedEjava.html | 120 + .../classes/Erubis/EscapedEjavascript.html | 120 + .../doc-api/classes/Erubis/EscapedEperl.html | 120 + .../doc-api/classes/Erubis/EscapedEphp.html | 120 + .../doc-api/classes/Erubis/EscapedEruby.html | 127 + .../classes/Erubis/EscapedEscheme.html | 120 + .../doc-api/classes/Erubis/Escheme.html | 126 + .../doc-api/classes/Erubis/Evaluator.html | 212 + .../doc-api/classes/Erubis/FastEruby.html | 131 + .../doc-api/classes/Erubis/Generator.html | 416 + .../classes/Erubis/HeaderFooterEnhancer.html | 267 + .../classes/Erubis/HeaderFooterEruby.html | 120 + .../doc-api/classes/Erubis/Helpers.html | 116 + .../Erubis/Helpers/RailsFormHelper.html | 787 + .../classes/Erubis/Helpers/RailsHelper.html | 349 + .../RailsHelper/TemplateConverter.html | 213 + .../classes/Erubis/InterpolationEnhancer.html | 305 + .../classes/Erubis/InterpolationEruby.html | 120 + .../doc-api/classes/Erubis/JavaGenerator.html | 359 + .../classes/Erubis/JavascriptGenerator.html | 386 + .../doc-api/classes/Erubis/Main.html | 341 + .../classes/Erubis/NoCodeEnhancer.html | 249 + .../doc-api/classes/Erubis/NoCodeEruby.html | 120 + .../classes/Erubis/NoTextEnhancer.html | 159 + .../doc-api/classes/Erubis/NoTextEruby.html | 120 + .../classes/Erubis/NotSupportedError.html | 119 + .../classes/Erubis/OptimizedEruby.html | 163 + .../classes/Erubis/OptimizedGenerator.html | 439 + .../classes/Erubis/OptimizedXmlEruby.html | 163 + .../doc-api/classes/Erubis/PI.html | 125 + .../doc-api/classes/Erubis/PI/Converter.html | 266 + .../doc-api/classes/Erubis/PI/Ec.html | 166 + .../doc-api/classes/Erubis/PI/Ecpp.html | 166 + .../doc-api/classes/Erubis/PI/Ejava.html | 166 + .../classes/Erubis/PI/Ejavascript.html | 166 + .../doc-api/classes/Erubis/PI/Engine.html | 122 + .../doc-api/classes/Erubis/PI/Eperl.html | 166 + .../doc-api/classes/Erubis/PI/Ephp.html | 166 + .../doc-api/classes/Erubis/PI/Eruby.html | 155 + .../doc-api/classes/Erubis/PI/Escheme.html | 166 + .../doc-api/classes/Erubis/PI/TinyEruby.html | 293 + .../classes/Erubis/PercentLineEnhancer.html | 163 + .../classes/Erubis/PercentLineEruby.html | 120 + .../doc-api/classes/Erubis/PerlGenerator.html | 344 + .../doc-api/classes/Erubis/PhpGenerator.html | 350 + .../classes/Erubis/PrefixedLineEnhancer.html | 210 + .../classes/Erubis/PrefixedLineEruby.html | 120 + .../classes/Erubis/PreprocessingEruby.html | 183 + .../classes/Erubis/PreprocessingHelper.html | 212 + .../classes/Erubis/PrintEnabledEnhancer.html | 212 + .../classes/Erubis/PrintEnabledEruby.html | 120 + .../classes/Erubis/PrintOutEnhancer.html | 244 + .../doc-api/classes/Erubis/PrintOutEruby.html | 120 + .../Erubis/PrintOutSimplifiedEruby.html | 121 + .../doc-api/classes/Erubis/RubyEvaluator.html | 227 + .../doc-api/classes/Erubis/RubyGenerator.html | 328 + .../classes/Erubis/SchemeGenerator.html | 382 + .../classes/Erubis/SimplifiedEruby.html | 120 + .../classes/Erubis/SimplifyEnhancer.html | 191 + .../classes/Erubis/StdoutEnhancer.html | 173 + .../doc-api/classes/Erubis/StdoutEruby.html | 120 + .../classes/Erubis/StdoutSimplifiedEruby.html | 121 + .../classes/Erubis/StringBufferEnhancer.html | 174 + .../classes/Erubis/StringBufferEruby.html | 120 + .../doc-api/classes/Erubis/StringIOEruby.html | 120 + .../doc-api/classes/Erubis/TinyEruby.html | 298 + .../doc-api/classes/Erubis/XmlEruby.html | 130 + .../doc-api/classes/Erubis/XmlHelper.html | 255 + .../erubis-2.7.0/doc-api/classes/Kernel.html | 155 + .../gems/erubis-2.7.0/doc-api/created.rid | 1 + .../doc-api/files/README_txt.html | 247 + .../doc-api/files/erubis/context_rb.html | 107 + .../doc-api/files/erubis/converter_rb.html | 114 + .../doc-api/files/erubis/engine/ec_rb.html | 115 + .../doc-api/files/erubis/engine/ecpp_rb.html | 115 + .../doc-api/files/erubis/engine/ejava_rb.html | 115 + .../files/erubis/engine/ejavascript_rb.html | 115 + .../files/erubis/engine/enhanced_rb.html | 115 + .../doc-api/files/erubis/engine/eperl_rb.html | 115 + .../doc-api/files/erubis/engine/ephp_rb.html | 115 + .../doc-api/files/erubis/engine/eruby_rb.html | 115 + .../files/erubis/engine/escheme_rb.html | 115 + .../files/erubis/engine/optimized_rb.html | 114 + .../doc-api/files/erubis/engine_rb.html | 117 + .../doc-api/files/erubis/enhancer_rb.html | 107 + .../doc-api/files/erubis/error_rb.html | 107 + .../doc-api/files/erubis/evaluator_rb.html | 115 + .../doc-api/files/erubis/generator_rb.html | 114 + .../doc-api/files/erubis/helper_rb.html | 107 + .../erubis/helpers/rails_form_helper_rb.html | 107 + .../files/erubis/helpers/rails_helper_rb.html | 116 + .../files/erubis/local-setting_rb.html | 107 + .../doc-api/files/erubis/main_rb.html | 129 + .../files/erubis/preprocessing_rb.html | 114 + .../doc-api/files/erubis/tiny_rb.html | 107 + .../doc-api/files/erubis/util_rb.html | 107 + .../erubis-2.7.0/doc-api/files/erubis_rb.html | 118 + .../erubis-2.7.0/doc-api/fr_class_index.html | 129 + .../erubis-2.7.0/doc-api/fr_file_index.html | 53 + .../erubis-2.7.0/doc-api/fr_method_index.html | 265 + .../gems/erubis-2.7.0/doc-api/index.html | 24 + .../gems/erubis-2.7.0/doc-api/rdoc-style.css | 208 + .../2.4.0/gems/erubis-2.7.0/doc/docstyle.css | 209 + .../gems/erubis-2.7.0/doc/users-guide.html | 3551 + .../gems/erubis-2.7.0/examples/basic/Makefile | 58 + .../erubis-2.7.0/examples/basic/example.ec | 42 + .../erubis-2.7.0/examples/basic/example.ecpp | 33 + .../erubis-2.7.0/examples/basic/example.ejava | 45 + .../erubis-2.7.0/examples/basic/example.ejs | 16 + .../erubis-2.7.0/examples/basic/example.eperl | 16 + .../erubis-2.7.0/examples/basic/example.ephp | 17 + .../erubis-2.7.0/examples/basic/example.eruby | 15 + .../examples/basic/example.escheme | 26 + .../gems/erubis-2.7.0/examples/pi/Makefile | 54 + .../gems/erubis-2.7.0/examples/pi/example.ec | 42 + .../erubis-2.7.0/examples/pi/example.ejava | 45 + .../gems/erubis-2.7.0/examples/pi/example.ejs | 16 + .../erubis-2.7.0/examples/pi/example.eperl | 16 + .../erubis-2.7.0/examples/pi/example.ephp | 17 + .../erubis-2.7.0/examples/pi/example.eruby | 15 + .../erubis-2.7.0/examples/pi/example.escheme | 26 + .../ruby/2.4.0/gems/erubis-2.7.0/setup.rb | 1331 + .../erubis-2.7.0/test/assert-text-equal.rb | 44 + .../test/data/users-guide/Example.ejava | 55 + .../data/users-guide/array_example.result | 9 + .../users-guide/arraybuffer_example.result | 9 + .../data/users-guide/bipattern-example.rhtml | 4 + .../data/users-guide/bipattern_example.result | 6 + .../test/data/users-guide/bufvar-example.rb | 10 + .../data/users-guide/bufvar-example.result | 17 + .../test/data/users-guide/context.rb | 6 + .../test/data/users-guide/context.yaml | 8 + .../test/data/users-guide/def_method.rb | 14 + .../test/data/users-guide/def_method.result | 3 + .../data/users-guide/escape_example.result | 9 + .../test/data/users-guide/example.ec | 27 + .../test/data/users-guide/example.ecpp | 30 + .../test/data/users-guide/example.ejs | 20 + .../test/data/users-guide/example.eperl | 18 + .../test/data/users-guide/example.ephp | 18 + .../test/data/users-guide/example.eruby | 6 + .../test/data/users-guide/example.escheme | 28 + .../test/data/users-guide/example1.eruby | 6 + .../test/data/users-guide/example1.rb | 17 + .../test/data/users-guide/example1.result | 16 + .../test/data/users-guide/example10.rb | 4 + .../test/data/users-guide/example10.result | 17 + .../test/data/users-guide/example10.xhtml | 14 + .../test/data/users-guide/example10_x.result | 17 + .../test/data/users-guide/example11.php | 20 + .../test/data/users-guide/example11.result | 23 + .../test/data/users-guide/example11.rhtml | 21 + .../test/data/users-guide/example11_C.result | 10 + .../test/data/users-guide/example11_N.result | 16 + .../test/data/users-guide/example11_U.result | 16 + .../data/users-guide/example11_php.result | 15 + .../test/data/users-guide/example1_x.result | 9 + .../test/data/users-guide/example2.eruby | 7 + .../test/data/users-guide/example2.rb | 10 + .../test/data/users-guide/example2.result | 27 + .../data/users-guide/example2_trim.result | 10 + .../test/data/users-guide/example2_x.result | 10 + .../test/data/users-guide/example3.eruby | 6 + .../test/data/users-guide/example3.rb | 10 + .../test/data/users-guide/example31.result | 22 + .../test/data/users-guide/example32.result | 4 + .../test/data/users-guide/example3_e.result | 8 + .../test/data/users-guide/example4.eruby | 3 + .../test/data/users-guide/example4.rb | 11 + .../test/data/users-guide/example4.result | 10 + .../test/data/users-guide/example4_x.result | 5 + .../test/data/users-guide/example5.eruby | 6 + .../test/data/users-guide/example5.rb | 16 + .../test/data/users-guide/example5.result | 7 + .../test/data/users-guide/example6.rb | 12 + .../test/data/users-guide/example6.result | 7 + .../test/data/users-guide/example7.eruby | 8 + .../test/data/users-guide/example71.result | 13 + .../test/data/users-guide/example72.result | 13 + .../test/data/users-guide/example8.eruby | 6 + .../data/users-guide/example8_ruby.result | 7 + .../data/users-guide/example8_yaml.result | 7 + .../test/data/users-guide/example9.eruby | 3 + .../test/data/users-guide/example9.rb | 8 + .../test/data/users-guide/example9.result | 9 + .../test/data/users-guide/example91.result | 5 + .../test/data/users-guide/example92.result | 4 + .../test/data/users-guide/example_c.result | 32 + .../test/data/users-guide/example_java.result | 56 + .../test/data/users-guide/example_js.result | 22 + .../test/data/users-guide/example_perl.result | 20 + .../test/data/users-guide/example_php.result | 19 + .../data/users-guide/example_scheme.result | 30 + .../users-guide/example_scheme_display.result | 29 + .../data/users-guide/fasteruby-example.rb | 8 + .../data/users-guide/fasteruby-example.result | 18 + .../test/data/users-guide/fasteruby.rb | 11 + .../test/data/users-guide/fasteruby.result | 38 + .../test/data/users-guide/fasteruby.rhtml | 15 + .../users-guide/headerfooter-example.eruby | 9 + .../data/users-guide/headerfooter-example2.rb | 8 + .../users-guide/headerfooter-example2.rhtml | 10 + .../users-guide/headerfooter_example.result | 11 + .../users-guide/headerfooter_example2.result | 13 + .../users-guide/interpolation_example.result | 9 + .../test/data/users-guide/main_program1.rb | 8 + .../data/users-guide/main_program1.result | 6 + .../test/data/users-guide/main_program2.rb | 8 + .../data/users-guide/main_program2.result | 6 + .../data/users-guide/nocode-example.eruby | 14 + .../test/data/users-guide/nocode-php.result | 20 + .../data/users-guide/nocode_example.result | 15 + .../data/users-guide/normal-eruby-test.eruby | 9 + .../data/users-guide/normal_eruby_test.result | 11 + .../data/users-guide/notext-example.eruby | 14 + .../test/data/users-guide/notext-example.php | 19 + .../test/data/users-guide/notext-php.result | 20 + .../data/users-guide/notext_example.result | 16 + .../users-guide/percentline-example.rhtml | 6 + .../users-guide/percentline_example.result | 9 + .../data/users-guide/prefixedline-example.rb | 9 + .../users-guide/prefixedline-example.rhtml | 6 + .../users-guide/prefixedline_example.result | 9 + .../users-guide/printenable_example.result | 4 + .../users-guide/printenabled-example.eruby | 3 + .../data/users-guide/printenabled-example.rb | 8 + .../users-guide/printstatement_example.result | 8 + .../data/users-guide/simplify_example.result | 9 + .../data/users-guide/stdout_exmple.result | 9 + .../users-guide/stringbuffer_example.result | 9 + .../test/data/users-guide/tail_260.result | 4 + .../test/data/users-guide/tailnewline.rhtml | 3 + .../test/data/users-guide/template1.rhtml | 4 + .../test/data/users-guide/template2.rhtml | 4 + .../gems/erubis-2.7.0/test/test-engines.rb | 425 + .../gems/erubis-2.7.0/test/test-enhancers.rb | 646 + .../gems/erubis-2.7.0/test/test-erubis.rb | 887 + .../gems/erubis-2.7.0/test/test-index-cgi.rb | 191 + .../2.4.0/gems/erubis-2.7.0/test/test-main.rb | 752 + .../erubis-2.7.0/test/test-users-guide.rb | 73 + .../ruby/2.4.0/gems/erubis-2.7.0/test/test.rb | 45 + .../2.4.0/gems/erubis-2.7.0/test/testutil.rb | 111 + .../2.4.0/gems/excon-0.58.0/CONTRIBUTING.md | 23 + .../2.4.0/gems/excon-0.58.0/CONTRIBUTORS.md | 140 + .../ruby/2.4.0/gems/excon-0.58.0/Gemfile | 19 + .../ruby/2.4.0/gems/excon-0.58.0/Gemfile.lock | 301 + .../ruby/2.4.0/gems/excon-0.58.0/LICENSE.md | 20 + .../ruby/2.4.0/gems/excon-0.58.0/README.md | 484 + .../ruby/2.4.0/gems/excon-0.58.0/Rakefile | 167 + .../benchmarks/class_vs_lambda.rb | 50 + .../benchmarks/concat_vs_insert.rb | 21 + .../benchmarks/concat_vs_interpolate.rb | 22 + .../gems/excon-0.58.0/benchmarks/cr_lf.rb | 21 + .../benchmarks/downcase-eq-eq_vs_casecmp.rb | 169 + .../gems/excon-0.58.0/benchmarks/excon.rb | 69 + .../gems/excon-0.58.0/benchmarks/excon_vs.rb | 165 + .../benchmarks/for_vs_array_each.rb | 27 + .../benchmarks/for_vs_hash_each.rb | 27 + .../benchmarks/has_key-vs-lookup.rb | 177 + .../benchmarks/headers_case_sensitivity.rb | 83 + .../benchmarks/headers_split_vs_match.rb | 34 + .../implicit_block-vs-explicit_block.rb | 98 + .../gems/excon-0.58.0/benchmarks/merging.rb | 21 + .../benchmarks/single_vs_double_quotes.rb | 21 + .../benchmarks/string_ranged_index.rb | 87 + .../excon-0.58.0/benchmarks/strip_newline.rb | 115 + .../gems/excon-0.58.0/benchmarks/vs_stdlib.rb | 82 + .../2.4.0/gems/excon-0.58.0/changelog.txt | 1049 + .../2.4.0/gems/excon-0.58.0/data/cacert.pem | 3955 + .../2.4.0/gems/excon-0.58.0/excon.gemspec | 202 + .../excon-0.58.0/spec/excon/error_spec.rb | 139 + .../spec/excon/test/server_spec.rb | 28 + .../gems/excon-0.58.0/spec/excon_spec.rb | 7 + .../spec/helpers/file_path_helpers.rb | 22 + .../excon-0.58.0/spec/requests/basic_spec.rb | 40 + .../spec/requests/eof_requests_spec.rb | 36 + .../spec/requests/unix_socket_spec.rb | 46 + .../gems/excon-0.58.0/spec/spec_helper.rb | 24 + .../shared_contexts/test_server_context.rb | 83 + .../shared_example_for_clients.rb | 209 + .../shared_example_for_streaming_clients.rb | 20 + .../shared_example_for_test_servers.rb | 16 + .../tests/authorization_header_tests.rb | 29 + .../gems/excon-0.58.0/tests/bad_tests.rb | 47 + .../gems/excon-0.58.0/tests/basic_tests.rb | 349 + .../excon-0.58.0/tests/complete_responses.rb | 31 + .../tests/data/127.0.0.1.cert.crt | 20 + .../tests/data/127.0.0.1.cert.key | 27 + .../excon-0.58.0/tests/data/excon.cert.crt | 20 + .../excon-0.58.0/tests/data/excon.cert.key | 27 + .../2.4.0/gems/excon-0.58.0/tests/data/xs | 1 + .../gems/excon-0.58.0/tests/error_tests.rb | 145 + .../gems/excon-0.58.0/tests/header_tests.rb | 119 + .../middlewares/canned_response_tests.rb | 34 + .../middlewares/capture_cookies_tests.rb | 34 + .../tests/middlewares/decompress_tests.rb | 157 + .../tests/middlewares/escape_path_tests.rb | 36 + .../tests/middlewares/idempotent_tests.rb | 164 + .../middlewares/instrumentation_tests.rb | 315 + .../tests/middlewares/mock_tests.rb | 304 + .../middlewares/redirect_follower_tests.rb | 80 + .../gems/excon-0.58.0/tests/pipeline_tests.rb | 40 + .../gems/excon-0.58.0/tests/proxy_tests.rb | 306 + .../excon-0.58.0/tests/query_string_tests.rb | 87 + .../gems/excon-0.58.0/tests/rackups/basic.rb | 41 + .../gems/excon-0.58.0/tests/rackups/basic.ru | 3 + .../excon-0.58.0/tests/rackups/basic_auth.ru | 14 + .../excon-0.58.0/tests/rackups/deflater.ru | 4 + .../gems/excon-0.58.0/tests/rackups/proxy.ru | 18 + .../tests/rackups/query_string.ru | 13 + .../excon-0.58.0/tests/rackups/redirecting.ru | 23 + .../tests/rackups/redirecting_with_cookie.ru | 40 + .../tests/rackups/request_headers.ru | 15 + .../tests/rackups/request_methods.ru | 21 + .../tests/rackups/response_header.ru | 18 + .../gems/excon-0.58.0/tests/rackups/ssl.ru | 16 + .../tests/rackups/ssl_mismatched_cn.ru | 15 + .../tests/rackups/ssl_verify_peer.ru | 16 + .../excon-0.58.0/tests/rackups/streaming.ru | 30 + .../tests/rackups/thread_safety.ru | 17 + .../excon-0.58.0/tests/rackups/timeout.ru | 14 + .../tests/rackups/webrick_patch.rb | 34 + .../tests/request_headers_tests.rb | 21 + .../tests/request_method_tests.rb | 47 + .../gems/excon-0.58.0/tests/request_tests.rb | 59 + .../gems/excon-0.58.0/tests/response_tests.rb | 197 + .../gems/excon-0.58.0/tests/servers/bad.rb | 20 + .../gems/excon-0.58.0/tests/servers/eof.rb | 17 + .../gems/excon-0.58.0/tests/servers/error.rb | 20 + .../gems/excon-0.58.0/tests/servers/good.rb | 350 + .../gems/excon-0.58.0/tests/test_helper.rb | 306 + .../excon-0.58.0/tests/thread_safety_tests.rb | 39 + .../gems/excon-0.58.0/tests/timeout_tests.rb | 12 + .../gems/excon-0.58.0/tests/utils_tests.rb | 81 + .../ruby/2.4.0/gems/faraday-0.12.1/LICENSE.md | 20 + .../ruby/2.4.0/gems/faraday-0.12.1/README.md | 354 + .../bundle/ruby/2.4.0/gems/ffi-1.9.18/COPYING | 49 + .../bundle/ruby/2.4.0/gems/ffi-1.9.18/LICENSE | 24 + .../ruby/2.4.0/gems/ffi-1.9.18/README.md | 111 + .../ruby/2.4.0/gems/ffi-1.9.18/Rakefile | 232 + .../ffi-1.9.18/ext/ffi_c/.sitearchdir.time | 0 .../ffi-1.9.18/ext/ffi_c/AbstractMemory.c | 1104 + .../ffi-1.9.18/ext/ffi_c/AbstractMemory.h | 175 + .../gems/ffi-1.9.18/ext/ffi_c/ArrayType.c | 162 + .../gems/ffi-1.9.18/ext/ffi_c/ArrayType.h | 59 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/Buffer.c | 365 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/Call.c | 517 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/Call.h | 110 + .../gems/ffi-1.9.18/ext/ffi_c/ClosurePool.c | 283 + .../gems/ffi-1.9.18/ext/ffi_c/ClosurePool.h | 57 + .../gems/ffi-1.9.18/ext/ffi_c/DataConverter.c | 91 + .../ffi-1.9.18/ext/ffi_c/DynamicLibrary.c | 339 + .../ffi-1.9.18/ext/ffi_c/DynamicLibrary.h | 98 + .../gems/ffi-1.9.18/ext/ffi_c/Function.c | 998 + .../gems/ffi-1.9.18/ext/ffi_c/Function.h | 87 + .../gems/ffi-1.9.18/ext/ffi_c/FunctionInfo.c | 271 + .../gems/ffi-1.9.18/ext/ffi_c/LastError.c | 184 + .../gems/ffi-1.9.18/ext/ffi_c/LastError.h | 47 + .../gems/ffi-1.9.18/ext/ffi_c/LongDouble.c | 63 + .../gems/ffi-1.9.18/ext/ffi_c/LongDouble.h | 51 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/Makefile | 264 + .../gems/ffi-1.9.18/ext/ffi_c/MappedType.c | 168 + .../gems/ffi-1.9.18/ext/ffi_c/MappedType.h | 59 + .../gems/ffi-1.9.18/ext/ffi_c/MemoryPointer.c | 197 + .../gems/ffi-1.9.18/ext/ffi_c/MemoryPointer.h | 53 + .../gems/ffi-1.9.18/ext/ffi_c/MethodHandle.c | 358 + .../gems/ffi-1.9.18/ext/ffi_c/MethodHandle.h | 55 + .../gems/ffi-1.9.18/ext/ffi_c/Platform.c | 121 + .../gems/ffi-1.9.18/ext/ffi_c/Platform.h | 45 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/Pointer.c | 508 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/Pointer.h | 63 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/Struct.c | 829 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/Struct.h | 106 + .../ffi-1.9.18/ext/ffi_c/StructByReference.c | 190 + .../ffi-1.9.18/ext/ffi_c/StructByReference.h | 50 + .../gems/ffi-1.9.18/ext/ffi_c/StructByValue.c | 150 + .../gems/ffi-1.9.18/ext/ffi_c/StructByValue.h | 55 + .../gems/ffi-1.9.18/ext/ffi_c/StructLayout.c | 698 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/Thread.c | 352 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/Thread.h | 95 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/Type.c | 397 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/Type.h | 62 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/Types.c | 139 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/Types.h | 89 + .../gems/ffi-1.9.18/ext/ffi_c/Variadic.c | 304 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/compat.h | 78 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/extconf.h | 7 + .../gems/ffi-1.9.18/ext/ffi_c/extconf.rb | 66 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/ffi.c | 98 + .../gems/ffi-1.9.18/ext/ffi_c/ffi_c.bundle | Bin 0 -> 180932 bytes .../gems/ffi-1.9.18/ext/ffi_c/libffi.bsd.mk | 34 + .../ffi-1.9.18/ext/ffi_c/libffi.darwin.mk | 95 + .../gems/ffi-1.9.18/ext/ffi_c/libffi.gnu.mk | 31 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi.mk | 13 + .../gems/ffi-1.9.18/ext/ffi_c/libffi.vc.mk | 26 + .../gems/ffi-1.9.18/ext/ffi_c/libffi.vc64.mk | 26 + .../ffi-1.9.18/ext/ffi_c/libffi/ChangeLog | 4600 + .../ext/ffi_c/libffi/ChangeLog.libffi | 584 + .../ext/ffi_c/libffi/ChangeLog.libgcj | 40 + .../ffi-1.9.18/ext/ffi_c/libffi/ChangeLog.v1 | 764 + .../gems/ffi-1.9.18/ext/ffi_c/libffi/LICENSE | 21 + .../ffi-1.9.18/ext/ffi_c/libffi/Makefile.am | 196 + .../ffi-1.9.18/ext/ffi_c/libffi/Makefile.in | 1820 + .../ffi-1.9.18/ext/ffi_c/libffi/Makefile.vc | 141 + .../ffi-1.9.18/ext/ffi_c/libffi/Makefile.vc64 | 141 + .../gems/ffi-1.9.18/ext/ffi_c/libffi/README | 342 + .../ffi-1.9.18/ext/ffi_c/libffi/acinclude.m4 | 92 + .../ffi-1.9.18/ext/ffi_c/libffi/aclocal.m4 | 1873 + .../ffi-1.9.18/ext/ffi_c/libffi/build-ios.sh | 67 + .../gems/ffi-1.9.18/ext/ffi_c/libffi/compile | 143 + .../ffi-1.9.18/ext/ffi_c/libffi/config.guess | 1501 + .../ffi-1.9.18/ext/ffi_c/libffi/config.sub | 1705 + .../ffi-1.9.18/ext/ffi_c/libffi/configure | 17191 +++ .../ffi-1.9.18/ext/ffi_c/libffi/configure.ac | 496 + .../ext/ffi_c/libffi/configure.host | 11 + .../gems/ffi-1.9.18/ext/ffi_c/libffi/depcomp | 630 + .../ext/ffi_c/libffi/doc/libffi.info | 593 + .../ext/ffi_c/libffi/doc/libffi.texi | 600 + .../ffi-1.9.18/ext/ffi_c/libffi/doc/stamp-vti | 4 + .../ext/ffi_c/libffi/doc/version.texi | 4 + .../ext/ffi_c/libffi/fficonfig.h.in | 199 + .../ffi-1.9.18/ext/ffi_c/libffi/fficonfig.hw | 57 + .../ext/ffi_c/libffi/include/Makefile.am | 9 + .../ext/ffi_c/libffi/include/Makefile.in | 487 + .../ext/ffi_c/libffi/include/ffi.h.in | 427 + .../ext/ffi_c/libffi/include/ffi.h.vc | 427 + .../ext/ffi_c/libffi/include/ffi.h.vc64 | 427 + .../ext/ffi_c/libffi/include/ffi_common.h | 126 + .../ffi-1.9.18/ext/ffi_c/libffi/install-sh | 520 + .../ffi-1.9.18/ext/ffi_c/libffi/libffi.pc.in | 10 + .../ext/ffi_c/libffi/libtool-version | 29 + .../ffi-1.9.18/ext/ffi_c/libffi/ltmain.sh | 9636 ++ .../ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 | 176 + .../ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 | 195 + .../libffi/m4/ax_check_compiler_flags.m4 | 76 + .../ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 | 63 + .../ext/ffi_c/libffi/m4/ax_configure_args.m4 | 70 + .../ext/ffi_c/libffi/m4/ax_enable_builddir.m4 | 300 + .../ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 | 215 + .../ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 | 79 + .../ffi-1.9.18/ext/ffi_c/libffi/m4/libtool.m4 | 7831 + .../ext/ffi_c/libffi/m4/ltoptions.m4 | 369 + .../ffi-1.9.18/ext/ffi_c/libffi/m4/ltsugar.m4 | 123 + .../ext/ffi_c/libffi/m4/ltversion.m4 | 23 + .../ext/ffi_c/libffi/m4/lt~obsolete.m4 | 98 + .../ext/ffi_c/libffi/man/Makefile.am | 8 + .../ext/ffi_c/libffi/man/Makefile.in | 466 + .../ffi-1.9.18/ext/ffi_c/libffi/man/ffi.3 | 31 + .../ext/ffi_c/libffi/man/ffi_call.3 | 103 + .../ext/ffi_c/libffi/man/ffi_prep_cif.3 | 66 + .../gems/ffi-1.9.18/ext/ffi_c/libffi/mdate-sh | 201 + .../gems/ffi-1.9.18/ext/ffi_c/libffi/missing | 376 + .../gems/ffi-1.9.18/ext/ffi_c/libffi/msvcc.sh | 197 + .../ext/ffi_c/libffi/src/alpha/ffi.c | 284 + .../ext/ffi_c/libffi/src/alpha/ffitarget.h | 48 + .../ext/ffi_c/libffi/src/alpha/osf.S | 387 + .../ffi-1.9.18/ext/ffi_c/libffi/src/arm/ffi.c | 728 + .../ext/ffi_c/libffi/src/arm/ffitarget.h | 65 + .../ext/ffi_c/libffi/src/arm/gentramp.sh | 118 + .../ext/ffi_c/libffi/src/arm/sysv.S | 497 + .../ext/ffi_c/libffi/src/arm/trampoline.S | 4450 + .../ext/ffi_c/libffi/src/avr32/ffi.c | 423 + .../ext/ffi_c/libffi/src/avr32/ffitarget.h | 50 + .../ext/ffi_c/libffi/src/avr32/sysv.S | 208 + .../ext/ffi_c/libffi/src/closures.c | 615 + .../ext/ffi_c/libffi/src/cris/ffi.c | 383 + .../ext/ffi_c/libffi/src/cris/ffitarget.h | 51 + .../ext/ffi_c/libffi/src/cris/sysv.S | 215 + .../ffi-1.9.18/ext/ffi_c/libffi/src/debug.c | 59 + .../ext/ffi_c/libffi/src/dlmalloc.c | 5161 + .../ext/ffi_c/libffi/src/frv/eabi.S | 128 + .../ffi-1.9.18/ext/ffi_c/libffi/src/frv/ffi.c | 292 + .../ext/ffi_c/libffi/src/frv/ffitarget.h | 57 + .../ext/ffi_c/libffi/src/ia64/ffi.c | 582 + .../ext/ffi_c/libffi/src/ia64/ffitarget.h | 50 + .../ext/ffi_c/libffi/src/ia64/ia64_flags.h | 40 + .../ext/ffi_c/libffi/src/ia64/unix.S | 560 + .../ext/ffi_c/libffi/src/java_raw_api.c | 356 + .../ext/ffi_c/libffi/src/m32r/ffi.c | 232 + .../ext/ffi_c/libffi/src/m32r/ffitarget.h | 48 + .../ext/ffi_c/libffi/src/m32r/sysv.S | 121 + .../ext/ffi_c/libffi/src/m68k/ffi.c | 288 + .../ext/ffi_c/libffi/src/m68k/ffitarget.h | 49 + .../ext/ffi_c/libffi/src/m68k/sysv.S | 270 + .../ext/ffi_c/libffi/src/mips/ffi.c | 1038 + .../ext/ffi_c/libffi/src/mips/ffitarget.h | 242 + .../ext/ffi_c/libffi/src/mips/n32.S | 591 + .../ext/ffi_c/libffi/src/mips/o32.S | 381 + .../ext/ffi_c/libffi/src/moxie/eabi.S | 128 + .../ext/ffi_c/libffi/src/moxie/ffi.c | 276 + .../ffi-1.9.18/ext/ffi_c/libffi/src/pa/ffi.c | 719 + .../ext/ffi_c/libffi/src/pa/ffitarget.h | 78 + .../ext/ffi_c/libffi/src/pa/hpux32.S | 368 + .../ext/ffi_c/libffi/src/pa/linux.S | 357 + .../ext/ffi_c/libffi/src/powerpc/aix.S | 328 + .../ffi_c/libffi/src/powerpc/aix_closure.S | 445 + .../ext/ffi_c/libffi/src/powerpc/asm.h | 125 + .../ext/ffi_c/libffi/src/powerpc/darwin.S | 383 + .../ffi_c/libffi/src/powerpc/darwin_closure.S | 575 + .../ext/ffi_c/libffi/src/powerpc/ffi.c | 1448 + .../ext/ffi_c/libffi/src/powerpc/ffi_darwin.c | 1359 + .../ext/ffi_c/libffi/src/powerpc/ffitarget.h | 139 + .../ext/ffi_c/libffi/src/powerpc/linux64.S | 187 + .../libffi/src/powerpc/linux64_closure.S | 236 + .../ffi_c/libffi/src/powerpc/ppc_closure.S | 327 + .../ext/ffi_c/libffi/src/powerpc/sysv.S | 219 + .../ext/ffi_c/libffi/src/prep_cif.c | 177 + .../ffi-1.9.18/ext/ffi_c/libffi/src/raw_api.c | 254 + .../ext/ffi_c/libffi/src/s390/ffi.c | 780 + .../ext/ffi_c/libffi/src/s390/ffitarget.h | 62 + .../ext/ffi_c/libffi/src/s390/sysv.S | 434 + .../ffi-1.9.18/ext/ffi_c/libffi/src/sh/ffi.c | 716 + .../ext/ffi_c/libffi/src/sh/ffitarget.h | 49 + .../ffi-1.9.18/ext/ffi_c/libffi/src/sh/sysv.S | 850 + .../ext/ffi_c/libffi/src/sh64/ffi.c | 468 + .../ext/ffi_c/libffi/src/sh64/ffitarget.h | 53 + .../ext/ffi_c/libffi/src/sh64/sysv.S | 539 + .../ext/ffi_c/libffi/src/sparc/ffi.c | 669 + .../ext/ffi_c/libffi/src/sparc/ffitarget.h | 68 + .../ext/ffi_c/libffi/src/sparc/v8.S | 313 + .../ext/ffi_c/libffi/src/sparc/v9.S | 307 + .../ffi-1.9.18/ext/ffi_c/libffi/src/types.c | 77 + .../ext/ffi_c/libffi/src/x86/darwin.S | 444 + .../ext/ffi_c/libffi/src/x86/darwin64.S | 416 + .../ffi-1.9.18/ext/ffi_c/libffi/src/x86/ffi.c | 644 + .../ext/ffi_c/libffi/src/x86/ffi64.c | 635 + .../ext/ffi_c/libffi/src/x86/ffitarget.h | 121 + .../ext/ffi_c/libffi/src/x86/freebsd.S | 458 + .../ext/ffi_c/libffi/src/x86/sysv.S | 468 + .../ext/ffi_c/libffi/src/x86/unix64.S | 426 + .../ext/ffi_c/libffi/src/x86/win32.S | 1065 + .../ext/ffi_c/libffi/src/x86/win64.S | 468 + .../ext/ffi_c/libffi/testsuite/Makefile.am | 80 + .../ext/ffi_c/libffi/testsuite/Makefile.in | 500 + .../ffi_c/libffi/testsuite/config/default.exp | 1 + .../libffi/testsuite/libffi.call/call.exp | 32 + .../testsuite/libffi.call/closure_fn0.c | 89 + .../testsuite/libffi.call/closure_fn1.c | 81 + .../testsuite/libffi.call/closure_fn2.c | 81 + .../testsuite/libffi.call/closure_fn3.c | 82 + .../testsuite/libffi.call/closure_fn4.c | 89 + .../testsuite/libffi.call/closure_fn5.c | 92 + .../testsuite/libffi.call/closure_fn6.c | 90 + .../testsuite/libffi.call/closure_loc_fn0.c | 95 + .../testsuite/libffi.call/closure_stdcall.c | 64 + .../libffi/testsuite/libffi.call/cls_12byte.c | 94 + .../libffi/testsuite/libffi.call/cls_16byte.c | 95 + .../libffi/testsuite/libffi.call/cls_18byte.c | 96 + .../libffi/testsuite/libffi.call/cls_19byte.c | 102 + .../testsuite/libffi.call/cls_1_1byte.c | 89 + .../libffi/testsuite/libffi.call/cls_20byte.c | 91 + .../testsuite/libffi.call/cls_20byte1.c | 93 + .../libffi/testsuite/libffi.call/cls_24byte.c | 113 + .../libffi/testsuite/libffi.call/cls_2byte.c | 90 + .../testsuite/libffi.call/cls_3_1byte.c | 95 + .../libffi/testsuite/libffi.call/cls_3byte1.c | 90 + .../libffi/testsuite/libffi.call/cls_3byte2.c | 90 + .../testsuite/libffi.call/cls_4_1byte.c | 98 + .../libffi/testsuite/libffi.call/cls_4byte.c | 90 + .../testsuite/libffi.call/cls_5_1_byte.c | 109 + .../libffi/testsuite/libffi.call/cls_5byte.c | 98 + .../libffi/testsuite/libffi.call/cls_64byte.c | 124 + .../testsuite/libffi.call/cls_6_1_byte.c | 113 + .../libffi/testsuite/libffi.call/cls_6byte.c | 99 + .../testsuite/libffi.call/cls_7_1_byte.c | 117 + .../libffi/testsuite/libffi.call/cls_7byte.c | 97 + .../libffi/testsuite/libffi.call/cls_8byte.c | 88 + .../libffi/testsuite/libffi.call/cls_9byte1.c | 90 + .../libffi/testsuite/libffi.call/cls_9byte2.c | 91 + .../testsuite/libffi.call/cls_align_double.c | 93 + .../testsuite/libffi.call/cls_align_float.c | 91 + .../libffi.call/cls_align_longdouble.c | 92 + .../libffi.call/cls_align_longdouble_split.c | 134 + .../libffi.call/cls_align_longdouble_split2.c | 117 + .../testsuite/libffi.call/cls_align_pointer.c | 95 + .../testsuite/libffi.call/cls_align_sint16.c | 91 + .../testsuite/libffi.call/cls_align_sint32.c | 91 + .../testsuite/libffi.call/cls_align_sint64.c | 92 + .../testsuite/libffi.call/cls_align_uint16.c | 91 + .../testsuite/libffi.call/cls_align_uint32.c | 91 + .../testsuite/libffi.call/cls_align_uint64.c | 93 + .../testsuite/libffi.call/cls_dbls_struct.c | 66 + .../libffi/testsuite/libffi.call/cls_double.c | 43 + .../testsuite/libffi.call/cls_double_va.c | 60 + .../libffi/testsuite/libffi.call/cls_float.c | 42 + .../testsuite/libffi.call/cls_longdouble.c | 105 + .../testsuite/libffi.call/cls_longdouble_va.c | 60 + .../testsuite/libffi.call/cls_multi_schar.c | 74 + .../testsuite/libffi.call/cls_multi_sshort.c | 74 + .../libffi.call/cls_multi_sshortchar.c | 86 + .../testsuite/libffi.call/cls_multi_uchar.c | 91 + .../testsuite/libffi.call/cls_multi_ushort.c | 74 + .../libffi.call/cls_multi_ushortchar.c | 86 + .../testsuite/libffi.call/cls_pointer.c | 74 + .../testsuite/libffi.call/cls_pointer_stack.c | 140 + .../libffi/testsuite/libffi.call/cls_schar.c | 44 + .../libffi/testsuite/libffi.call/cls_sint.c | 42 + .../libffi/testsuite/libffi.call/cls_sshort.c | 42 + .../libffi/testsuite/libffi.call/cls_uchar.c | 42 + .../libffi/testsuite/libffi.call/cls_uint.c | 43 + .../testsuite/libffi.call/cls_ulonglong.c | 47 + .../libffi/testsuite/libffi.call/cls_ushort.c | 43 + .../testsuite/libffi.call/err_bad_abi.c | 36 + .../testsuite/libffi.call/err_bad_typedef.c | 26 + .../libffi/testsuite/libffi.call/ffitest.h | 153 + .../libffi/testsuite/libffi.call/float.c | 59 + .../libffi/testsuite/libffi.call/float1.c | 58 + .../libffi/testsuite/libffi.call/float2.c | 58 + .../libffi/testsuite/libffi.call/float3.c | 72 + .../libffi/testsuite/libffi.call/float4.c | 62 + .../testsuite/libffi.call/huge_struct.c | 342 + .../ffi_c/libffi/testsuite/libffi.call/many.c | 69 + .../libffi/testsuite/libffi.call/many_win32.c | 63 + .../libffi/testsuite/libffi.call/negint.c | 53 + .../testsuite/libffi.call/nested_struct.c | 152 + .../testsuite/libffi.call/nested_struct1.c | 161 + .../testsuite/libffi.call/nested_struct10.c | 133 + .../testsuite/libffi.call/nested_struct2.c | 110 + .../testsuite/libffi.call/nested_struct3.c | 111 + .../testsuite/libffi.call/nested_struct4.c | 111 + .../testsuite/libffi.call/nested_struct5.c | 112 + .../testsuite/libffi.call/nested_struct6.c | 131 + .../testsuite/libffi.call/nested_struct7.c | 111 + .../testsuite/libffi.call/nested_struct8.c | 131 + .../testsuite/libffi.call/nested_struct9.c | 131 + .../libffi/testsuite/libffi.call/problem1.c | 90 + .../libffi/testsuite/libffi.call/promotion.c | 59 + .../libffi/testsuite/libffi.call/pyobjc-tc.c | 114 + .../libffi/testsuite/libffi.call/return_dbl.c | 35 + .../testsuite/libffi.call/return_dbl1.c | 43 + .../testsuite/libffi.call/return_dbl2.c | 42 + .../libffi/testsuite/libffi.call/return_fl.c | 35 + .../libffi/testsuite/libffi.call/return_fl1.c | 36 + .../libffi/testsuite/libffi.call/return_fl2.c | 49 + .../libffi/testsuite/libffi.call/return_fl3.c | 42 + .../libffi/testsuite/libffi.call/return_ldl.c | 34 + .../libffi/testsuite/libffi.call/return_ll.c | 41 + .../libffi/testsuite/libffi.call/return_ll1.c | 43 + .../libffi/testsuite/libffi.call/return_sc.c | 36 + .../libffi/testsuite/libffi.call/return_sl.c | 38 + .../libffi/testsuite/libffi.call/return_uc.c | 38 + .../libffi/testsuite/libffi.call/return_ul.c | 38 + .../testsuite/libffi.call/stret_large.c | 145 + .../testsuite/libffi.call/stret_large2.c | 148 + .../testsuite/libffi.call/stret_medium.c | 124 + .../testsuite/libffi.call/stret_medium2.c | 125 + .../libffi/testsuite/libffi.call/strlen.c | 44 + .../testsuite/libffi.call/strlen_win32.c | 44 + .../libffi/testsuite/libffi.call/struct1.c | 65 + .../libffi/testsuite/libffi.call/struct2.c | 67 + .../libffi/testsuite/libffi.call/struct3.c | 59 + .../libffi/testsuite/libffi.call/struct4.c | 63 + .../libffi/testsuite/libffi.call/struct5.c | 65 + .../libffi/testsuite/libffi.call/struct6.c | 64 + .../libffi/testsuite/libffi.call/struct7.c | 74 + .../libffi/testsuite/libffi.call/struct8.c | 80 + .../libffi/testsuite/libffi.call/struct9.c | 67 + .../testsuite/libffi.call/testclosure.c | 70 + .../testsuite/libffi.special/ffitestcxx.h | 96 + .../testsuite/libffi.special/special.exp | 35 + .../testsuite/libffi.special/unwindtest.cc | 124 + .../libffi.special/unwindtest_ffi_call.cc | 53 + .../ffi-1.9.18/ext/ffi_c/libffi/texinfo.tex | 7210 + .../2.4.0/gems/ffi-1.9.18/ext/ffi_c/rbffi.h | 57 + .../gems/ffi-1.9.18/ext/ffi_c/rbffi_endian.h | 59 + .../gems/ffi-1.9.18/ext/ffi_c/win32/stdbool.h | 8 + .../gems/ffi-1.9.18/ext/ffi_c/win32/stdint.h | 201 + .../ruby/2.4.0/gems/ffi-1.9.18/ffi.gemspec | 23 + .../ruby/2.4.0/gems/ffi-1.9.18/gen/Rakefile | 30 + .../2.4.0/gems/ffi-1.9.18/libtest/Benchmark.c | 52 + .../2.4.0/gems/ffi-1.9.18/libtest/BoolTest.c | 34 + .../gems/ffi-1.9.18/libtest/BufferTest.c | 31 + .../gems/ffi-1.9.18/libtest/ClosureTest.c | 205 + .../2.4.0/gems/ffi-1.9.18/libtest/EnumTest.c | 51 + .../gems/ffi-1.9.18/libtest/FunctionTest.c | 70 + .../2.4.0/gems/ffi-1.9.18/libtest/GNUmakefile | 149 + .../gems/ffi-1.9.18/libtest/GlobalVariable.c | 62 + .../gems/ffi-1.9.18/libtest/LastErrorTest.c | 21 + .../gems/ffi-1.9.18/libtest/NumberTest.c | 132 + .../gems/ffi-1.9.18/libtest/PointerTest.c | 63 + .../gems/ffi-1.9.18/libtest/ReferenceTest.c | 23 + .../gems/ffi-1.9.18/libtest/StringTest.c | 34 + .../gems/ffi-1.9.18/libtest/StructTest.c | 243 + .../2.4.0/gems/ffi-1.9.18/libtest/UnionTest.c | 43 + .../gems/ffi-1.9.18/libtest/VariadicTest.c | 99 + .../gems/ffi-1.9.18/spec/ffi/LICENSE.SPECS | 22 + .../spec/ffi/async_callback_spec.rb | 35 + .../gems/ffi-1.9.18/spec/ffi/bool_spec.rb | 32 + .../gems/ffi-1.9.18/spec/ffi/buffer_spec.rb | 279 + .../gems/ffi-1.9.18/spec/ffi/callback_spec.rb | 773 + .../ffi-1.9.18/spec/ffi/custom_param_type.rb | 37 + .../ffi-1.9.18/spec/ffi/custom_type_spec.rb | 74 + .../gems/ffi-1.9.18/spec/ffi/dup_spec.rb | 52 + .../gems/ffi-1.9.18/spec/ffi/enum_spec.rb | 423 + .../gems/ffi-1.9.18/spec/ffi/errno_spec.rb | 20 + .../gems/ffi-1.9.18/spec/ffi/ffi_spec.rb | 28 + .../ffi-1.9.18/spec/ffi/fixtures/Benchmark.c | 52 + .../ffi-1.9.18/spec/ffi/fixtures/BoolTest.c | 34 + .../ffi-1.9.18/spec/ffi/fixtures/BufferTest.c | 31 + .../spec/ffi/fixtures/ClosureTest.c | 205 + .../ffi-1.9.18/spec/ffi/fixtures/EnumTest.c | 51 + .../spec/ffi/fixtures/FunctionTest.c | 142 + .../ffi-1.9.18/spec/ffi/fixtures/GNUmakefile | 149 + .../spec/ffi/fixtures/GlobalVariable.c | 62 + .../spec/ffi/fixtures/LastErrorTest.c | 21 + .../ffi-1.9.18/spec/ffi/fixtures/NumberTest.c | 132 + .../ffi-1.9.18/spec/ffi/fixtures/PipeHelper.h | 21 + .../spec/ffi/fixtures/PipeHelperPosix.c | 41 + .../spec/ffi/fixtures/PipeHelperWindows.c | 72 + .../spec/ffi/fixtures/PointerTest.c | 63 + .../spec/ffi/fixtures/ReferenceTest.c | 23 + .../ffi-1.9.18/spec/ffi/fixtures/StringTest.c | 34 + .../ffi-1.9.18/spec/ffi/fixtures/StructTest.c | 243 + .../ffi-1.9.18/spec/ffi/fixtures/UnionTest.c | 43 + .../spec/ffi/fixtures/VariadicTest.c | 99 + .../ffi-1.9.18/spec/ffi/fixtures/classes.rb | 438 + .../gems/ffi-1.9.18/spec/ffi/function_spec.rb | 97 + .../2.4.0/gems/ffi-1.9.18/spec/ffi/io_spec.rb | 16 + .../gems/ffi-1.9.18/spec/ffi/library_spec.rb | 286 + .../gems/ffi-1.9.18/spec/ffi/long_double.rb | 30 + .../spec/ffi/managed_struct_spec.rb | 68 + .../ffi-1.9.18/spec/ffi/memorypointer_spec.rb | 78 + .../gems/ffi-1.9.18/spec/ffi/number_spec.rb | 247 + .../gems/ffi-1.9.18/spec/ffi/platform_spec.rb | 114 + .../gems/ffi-1.9.18/spec/ffi/pointer_spec.rb | 285 + .../spec/ffi/rbx/attach_function_spec.rb | 34 + .../spec/ffi/rbx/memory_pointer_spec.rb | 194 + .../ffi-1.9.18/spec/ffi/rbx/spec_helper.rb | 6 + .../ffi-1.9.18/spec/ffi/rbx/struct_spec.rb | 18 + .../gems/ffi-1.9.18/spec/ffi/spec_helper.rb | 93 + .../gems/ffi-1.9.18/spec/ffi/string_spec.rb | 118 + .../gems/ffi-1.9.18/spec/ffi/strptr_spec.rb | 50 + .../ffi-1.9.18/spec/ffi/struct_by_ref_spec.rb | 43 + .../spec/ffi/struct_callback_spec.rb | 69 + .../spec/ffi/struct_initialize_spec.rb | 35 + .../ffi-1.9.18/spec/ffi/struct_packed_spec.rb | 50 + .../gems/ffi-1.9.18/spec/ffi/struct_spec.rb | 886 + .../gems/ffi-1.9.18/spec/ffi/typedef_spec.rb | 91 + .../gems/ffi-1.9.18/spec/ffi/union_spec.rb | 67 + .../gems/ffi-1.9.18/spec/ffi/variadic_spec.rb | 132 + .../ruby/2.4.0/gems/ffi-1.9.18/spec/spec.opts | 4 + .../ruby/2.4.0/gems/gssapi-1.2.0/COPYING | 18 + .../ruby/2.4.0/gems/gssapi-1.2.0/Changelog.md | 14 + .../ruby/2.4.0/gems/gssapi-1.2.0/Gemfile | 2 + .../ruby/2.4.0/gems/gssapi-1.2.0/README.md | 22 + .../ruby/2.4.0/gems/gssapi-1.2.0/Rakefile | 11 + .../ruby/2.4.0/gems/gssapi-1.2.0/VERSION | 1 + .../gems/gssapi-1.2.0/examples/gss_client.rb | 26 + .../gssapi-1.2.0/examples/gss_iov_client.rb | 55 + .../gssapi-1.2.0/examples/gss_iov_helpers.rb | 74 + .../gssapi-1.2.0/examples/gss_iov_server.rb | 67 + .../gems/gssapi-1.2.0/examples/gss_server.rb | 31 + .../2.4.0/gems/gssapi-1.2.0/gssapi.gemspec | 34 + .../ruby/2.4.0/gems/gssapi-1.2.0/preamble | 5 + .../test/spec/gssapi_simple_spec.rb | 24 + .../test/spec/test_buffer_spec.rb | 15 + .../ruby/2.4.0/gems/gyoku-1.3.1/.gitignore | 11 + .../bundle/ruby/2.4.0/gems/gyoku-1.3.1/.rspec | 1 + .../ruby/2.4.0/gems/gyoku-1.3.1/.travis.yml | 9 + .../ruby/2.4.0/gems/gyoku-1.3.1/CHANGELOG.md | 128 + .../ruby/2.4.0/gems/gyoku-1.3.1/Gemfile | 12 + .../ruby/2.4.0/gems/gyoku-1.3.1/MIT-LICENSE | 20 + .../ruby/2.4.0/gems/gyoku-1.3.1/README.md | 192 + .../ruby/2.4.0/gems/gyoku-1.3.1/Rakefile | 12 + .../ruby/2.4.0/gems/gyoku-1.3.1/gyoku.gemspec | 27 + .../gems/gyoku-1.3.1/spec/gyoku/array_spec.rb | 74 + .../gems/gyoku-1.3.1/spec/gyoku/hash_spec.rb | 390 + .../gyoku-1.3.1/spec/gyoku/xml_key_spec.rb | 78 + .../gyoku-1.3.1/spec/gyoku/xml_value_spec.rb | 63 + .../2.4.0/gems/gyoku-1.3.1/spec/gyoku_spec.rb | 84 + .../gems/gyoku-1.3.1/spec/spec_helper.rb | 15 + .../2.4.0/gems/htmlentities-4.3.4/COPYING.txt | 21 + .../2.4.0/gems/htmlentities-4.3.4/History.txt | 92 + .../gems/htmlentities-4.3.4/perf/benchmark.rb | 13 + .../htmlentities-4.3.4/perf/performance.rb | 31 + .../gems/htmlentities-4.3.4/perf/profile.rb | 17 + .../htmlentities-4.3.4/test/decoding_test.rb | 101 + .../htmlentities-4.3.4/test/encoding_test.rb | 106 + .../htmlentities-4.3.4/test/entities_test.rb | 24 + .../htmlentities-4.3.4/test/expanded_test.rb | 109 + .../htmlentities-4.3.4/test/html4_test.rb | 25 + .../test/interoperability_test.rb | 15 + .../htmlentities-4.3.4/test/roundtrip_test.rb | 67 + .../test/string_encodings_test.rb | 68 + .../htmlentities-4.3.4/test/test_helper.rb | 3 + .../htmlentities-4.3.4/test/xhtml1_test.rb | 24 + .../ruby/2.4.0/gems/http-2.2.2/.coveralls.yml | 1 + .../ruby/2.4.0/gems/http-2.2.2/.gitignore | 18 + .../bundle/ruby/2.4.0/gems/http-2.2.2/.rspec | 5 + .../ruby/2.4.0/gems/http-2.2.2/.rubocop.yml | 77 + .../ruby/2.4.0/gems/http-2.2.2/.ruby-version | 1 + .../ruby/2.4.0/gems/http-2.2.2/.travis.yml | 31 + .../ruby/2.4.0/gems/http-2.2.2/.yardopts | 2 + .../ruby/2.4.0/gems/http-2.2.2/CHANGES.md | 596 + .../2.4.0/gems/http-2.2.2/CONTRIBUTING.md | 26 + .../bundle/ruby/2.4.0/gems/http-2.2.2/Gemfile | 35 + .../ruby/2.4.0/gems/http-2.2.2/Guardfile | 16 + .../ruby/2.4.0/gems/http-2.2.2/LICENSE.txt | 20 + .../ruby/2.4.0/gems/http-2.2.2/README.md | 198 + .../ruby/2.4.0/gems/http-2.2.2/Rakefile | 71 + .../ruby/2.4.0/gems/http-2.2.2/http.gemspec | 34 + .../ruby/2.4.0/gems/http-2.2.2/logo.png | Bin 0 -> 7915 bytes .../gems/http-2.2.2/spec/regression_specs.rb | 16 + .../2.4.0/gems/http-2.2.2/spec/spec_helper.rb | 87 + .../http-2.2.2/spec/support/black_hole.rb | 6 + .../spec/support/capture_warning.rb | 9 + .../http-2.2.2/spec/support/dummy_server.rb | 42 + .../spec/support/dummy_server/servlet.rb | 172 + .../spec/support/http_handling_shared.rb | 193 + .../http-2.2.2/spec/support/proxy_server.rb | 38 + .../http-2.2.2/spec/support/servers/config.rb | 10 + .../http-2.2.2/spec/support/servers/runner.rb | 18 + .../http-2.2.2/spec/support/ssl_helper.rb | 103 + .../2.4.0/gems/http-cookie-1.0.3/.gitignore | 17 + .../2.4.0/gems/http-cookie-1.0.3/.travis.yml | 21 + .../2.4.0/gems/http-cookie-1.0.3/CHANGELOG.md | 22 + .../ruby/2.4.0/gems/http-cookie-1.0.3/Gemfile | 4 + .../2.4.0/gems/http-cookie-1.0.3/LICENSE.txt | 24 + .../2.4.0/gems/http-cookie-1.0.3/README.md | 235 + .../2.4.0/gems/http-cookie-1.0.3/Rakefile | 20 + .../http-cookie-1.0.3/http-cookie.gemspec | 34 + .../gems/http-cookie-1.0.3/test/helper.rb | 55 + .../gems/http-cookie-1.0.3/test/mechanize.yml | 101 + .../http-cookie-1.0.3/test/simplecov_start.rb | 2 + .../test/test_http_cookie.rb | 1122 + .../test/test_http_cookie_jar.rb | 985 + .../gems/http-form_data-1.0.3/.gitignore | 14 + .../2.4.0/gems/http-form_data-1.0.3/.rspec | 2 + .../gems/http-form_data-1.0.3/.rubocop.yml | 61 + .../gems/http-form_data-1.0.3/.travis.yml | 32 + .../2.4.0/gems/http-form_data-1.0.3/.yardopts | 2 + .../gems/http-form_data-1.0.3/CHANGES.md | 45 + .../2.4.0/gems/http-form_data-1.0.3/Gemfile | 12 + .../2.4.0/gems/http-form_data-1.0.3/Guardfile | 16 + .../gems/http-form_data-1.0.3/LICENSE.txt | 22 + .../2.4.0/gems/http-form_data-1.0.3/README.md | 100 + .../2.4.0/gems/http-form_data-1.0.3/Rakefile | 8 + .../gems/http-form_data-1.0.3/appveyor.yml | 8 + .../http-form_data.gemspec | 29 + .../spec/fixtures/expected-multipart-body.tpl | 0 .../spec/fixtures/the-http-gem.info | 1 + .../http-form_data-1.0.3/spec/spec_helper.rb | 73 + .../spec/support/fixtures_helper.rb | 13 + .../gems/http_parser.rb-0.6.0/.gitignore | 11 + .../gems/http_parser.rb-0.6.0/.gitmodules | 6 + .../2.4.0/gems/http_parser.rb-0.6.0/Gemfile | 2 + .../gems/http_parser.rb-0.6.0/Gemfile.lock | 39 + .../gems/http_parser.rb-0.6.0/LICENSE-MIT | 20 + .../2.4.0/gems/http_parser.rb-0.6.0/README.md | 90 + .../2.4.0/gems/http_parser.rb-0.6.0/Rakefile | 6 + .../http_parser.rb-0.6.0/bench/standalone.rb | 23 + .../gems/http_parser.rb-0.6.0/bench/thin.rb | 58 + .../ext/ruby_http_parser/.gitignore | 1 + .../ext/ruby_http_parser/.sitearchdir.time | 0 .../RubyHttpParserService.java | 18 + .../ext/ruby_http_parser/ext_help.h | 18 + .../ext/ruby_http_parser/extconf.rb | 24 + .../org/ruby_http_parser/RubyHttpParser.java | 495 + .../ext/ruby_http_parser/ruby_http_parser.c | 515 + .../ext/ruby_http_parser/vendor/.gitkeep | 0 .../vendor/http-parser-java/AUTHORS | 32 + .../vendor/http-parser-java/LICENSE-MIT | 48 + .../vendor/http-parser-java/README.md | 183 + .../vendor/http-parser-java/TODO | 28 + .../vendor/http-parser-java/build.xml | 74 + .../vendor/http-parser-java/http_parser.c | 2175 + .../vendor/http-parser-java/http_parser.gyp | 79 + .../vendor/http-parser-java/http_parser.h | 304 + .../http-parser-java/src/Http-parser.java.iml | 22 + .../src/impl/http_parser/FieldData.java | 41 + .../src/impl/http_parser/HTTPCallback.java | 8 + .../impl/http_parser/HTTPDataCallback.java | 34 + .../impl/http_parser/HTTPErrorCallback.java | 12 + .../src/impl/http_parser/HTTPException.java | 9 + .../src/impl/http_parser/HTTPMethod.java | 107 + .../src/impl/http_parser/HTTPParser.java | 36 + .../src/impl/http_parser/HTTPParserUrl.java | 76 + .../src/impl/http_parser/ParserSettings.java | 256 + .../src/impl/http_parser/ParserType.java | 13 + .../src/impl/http_parser/Util.java | 111 + .../http_parser/lolevel/HTTPCallback.java | 5 + .../http_parser/lolevel/HTTPDataCallback.java | 25 + .../lolevel/HTTPErrorCallback.java | 7 + .../impl/http_parser/lolevel/HTTPParser.java | 2161 + .../http_parser/lolevel/ParserSettings.java | 83 + .../src/test/http_parser/lolevel/Message.java | 374 + .../test/http_parser/lolevel/ParseUrl.java | 51 + .../test/http_parser/lolevel/Requests.java | 69 + .../test/http_parser/lolevel/Responses.java | 52 + .../src/test/http_parser/lolevel/Test.java | 16 + .../lolevel/TestHeaderOverflowError.java | 48 + .../http_parser/lolevel/TestLoaderNG.java | 212 + .../lolevel/TestNoOverflowLongBody.java | 62 + .../test/http_parser/lolevel/UnitTest.java | 117 + .../src/test/http_parser/lolevel/Upgrade.java | 27 + .../src/test/http_parser/lolevel/Url.java | 127 + .../src/test/http_parser/lolevel/Util.java | 236 + .../lolevel/WrongContentLength.java | 59 + .../vendor/http-parser-java/test.c | 3425 + .../vendor/http-parser-java/tests.dumped | 845 + .../vendor/http-parser-java/tests.utf8 | 17 + .../http-parser-java/tools/byte_constants.rb | 6 + .../http-parser-java/tools/const_char.rb | 13 + .../vendor/http-parser-java/tools/lowcase.rb | 15 + .../http-parser-java/tools/parse_tests.rb | 33 + .../vendor/http-parser/AUTHORS | 32 + .../vendor/http-parser/CONTRIBUTIONS | 4 + .../vendor/http-parser/LICENSE-MIT | 23 + .../vendor/http-parser/README.md | 178 + .../vendor/http-parser/http_parser.c | 2058 + .../vendor/http-parser/http_parser.gyp | 79 + .../vendor/http-parser/http_parser.h | 312 + .../vendor/http-parser/test.c | 2876 + .../http_parser.rb.gemspec | 28 + .../http_parser.rb-0.6.0/spec/parser_spec.rb | 350 + .../http_parser.rb-0.6.0/spec/spec_helper.rb | 1 + .../spec/support/requests.json | 612 + .../spec/support/responses.json | 375 + .../http_parser.rb-0.6.0/tasks/compile.rake | 42 + .../http_parser.rb-0.6.0/tasks/fixtures.rake | 71 + .../gems/http_parser.rb-0.6.0/tasks/spec.rake | 5 + .../tasks/submodules.rake | 7 + .../2.4.0/gems/httpclient-2.8.3/README.md | 85 + .../gems/httpclient-2.8.3/bin/httpclient | 77 + .../gems/httpclient-2.8.3/bin/jsonclient | 85 + .../gems/httpclient-2.8.3/sample/async.rb | 8 + .../gems/httpclient-2.8.3/sample/auth.rb | 11 + .../gems/httpclient-2.8.3/sample/cookie.rb | 18 + .../2.4.0/gems/httpclient-2.8.3/sample/dav.rb | 103 + .../gems/httpclient-2.8.3/sample/howto.rb | 49 + .../httpclient-2.8.3/sample/jsonclient.rb | 67 + .../httpclient-2.8.3/sample/oauth_buzz.rb | 57 + .../sample/oauth_friendfeed.rb | 59 + .../httpclient-2.8.3/sample/oauth_twitter.rb | 61 + .../httpclient-2.8.3/sample/ssl/0cert.pem | 22 + .../gems/httpclient-2.8.3/sample/ssl/0key.pem | 30 + .../httpclient-2.8.3/sample/ssl/1000cert.pem | 19 + .../httpclient-2.8.3/sample/ssl/1000key.pem | 18 + .../sample/ssl/htdocs/index.html | 10 + .../httpclient-2.8.3/sample/ssl/ssl_client.rb | 22 + .../sample/ssl/webrick_httpsd.rb | 29 + .../gems/httpclient-2.8.3/sample/stream.rb | 21 + .../gems/httpclient-2.8.3/sample/thread.rb | 27 + .../gems/httpclient-2.8.3/sample/wcat.rb | 21 + .../gems/httpclient-2.8.3/test/ca-chain.pem | 44 + .../2.4.0/gems/httpclient-2.8.3/test/ca.cert | 23 + .../httpclient-2.8.3/test/client-pass.key | 18 + .../gems/httpclient-2.8.3/test/client.cert | 19 + .../gems/httpclient-2.8.3/test/client.key | 15 + .../gems/httpclient-2.8.3/test/helper.rb | 131 + .../2.4.0/gems/httpclient-2.8.3/test/htdigest | 1 + .../2.4.0/gems/httpclient-2.8.3/test/htpasswd | 2 + .../test/jruby_ssl_socket/test_pemutils.rb | 32 + .../gems/httpclient-2.8.3/test/runner.rb | 2 + .../gems/httpclient-2.8.3/test/server.cert | 19 + .../gems/httpclient-2.8.3/test/server.key | 15 + .../gems/httpclient-2.8.3/test/sslsvr.rb | 65 + .../gems/httpclient-2.8.3/test/subca.cert | 21 + .../gems/httpclient-2.8.3/test/test_auth.rb | 492 + .../gems/httpclient-2.8.3/test/test_cookie.rb | 309 + .../httpclient-2.8.3/test/test_hexdump.rb | 14 + .../test/test_http-access2.rb | 508 + .../httpclient-2.8.3/test/test_httpclient.rb | 2145 + .../test/test_include_client.rb | 52 + .../httpclient-2.8.3/test/test_jsonclient.rb | 80 + .../gems/httpclient-2.8.3/test/test_ssl.rb | 559 + .../test/test_webagent-cookie.rb | 465 + .../2.4.0/gems/inspec-1.33.1/.rubocop.yml | 72 + .../2.4.0/gems/inspec-1.33.1/CHANGELOG.md | 2578 + .../ruby/2.4.0/gems/inspec-1.33.1/Gemfile | 53 + .../ruby/2.4.0/gems/inspec-1.33.1/LICENSE | 14 + .../2.4.0/gems/inspec-1.33.1/MAINTAINERS.md | 31 + .../2.4.0/gems/inspec-1.33.1/MAINTAINERS.toml | 47 + .../ruby/2.4.0/gems/inspec-1.33.1/README.md | 429 + .../ruby/2.4.0/gems/inspec-1.33.1/Rakefile | 184 + .../ruby/2.4.0/gems/inspec-1.33.1/bin/inspec | 12 + .../2.4.0/gems/inspec-1.33.1/docs/.gitignore | 2 + .../2.4.0/gems/inspec-1.33.1/docs/README.md | 40 + .../gems/inspec-1.33.1/docs/dsl_inspec.md | 248 + .../gems/inspec-1.33.1/docs/dsl_resource.md | 93 + .../2.4.0/gems/inspec-1.33.1/docs/habitat.md | 192 + .../inspec-1.33.1/docs/inspec_and_friends.md | 107 + .../2.4.0/gems/inspec-1.33.1/docs/matchers.md | 147 + .../gems/inspec-1.33.1/docs/migration.md | 293 + .../docs/plugin_kitchen_inspec.md | 55 + .../2.4.0/gems/inspec-1.33.1/docs/profiles.md | 350 + .../docs/resources/apache_conf.md.erb | 75 + .../inspec-1.33.1/docs/resources/apt.md.erb | 84 + .../docs/resources/audit_policy.md.erb | 61 + .../docs/resources/auditd_conf.md.erb | 79 + .../docs/resources/auditd_rules.md.erb | 132 + .../inspec-1.33.1/docs/resources/bash.md.erb | 84 + .../inspec-1.33.1/docs/resources/bond.md.erb | 97 + .../docs/resources/bridge.md.erb | 67 + .../docs/resources/bsd_service.md.erb | 76 + .../docs/resources/command.md.erb | 151 + .../docs/resources/crontab.md.erb | 84 + .../inspec-1.33.1/docs/resources/csv.md.erb | 62 + .../inspec-1.33.1/docs/resources/dh_params.md | 191 + .../docs/resources/directory.md.erb | 43 + .../docs/resources/docker.md.erb | 160 + .../docs/resources/docker_container.md.erb | 89 + .../docs/resources/docker_image.md.erb | 86 + .../docs/resources/etc_group.md.erb | 116 + .../docs/resources/etc_passwd.md.erb | 155 + .../docs/resources/etc_shadow.md.erb | 149 + .../inspec-1.33.1/docs/resources/file.md.erb | 482 + .../inspec-1.33.1/docs/resources/gem.md.erb | 92 + .../inspec-1.33.1/docs/resources/group.md.erb | 74 + .../docs/resources/grub_conf.md.erb | 115 + .../inspec-1.33.1/docs/resources/host.md.erb | 94 + .../inspec-1.33.1/docs/resources/http.md.erb | 104 + .../docs/resources/iis_app.md.erb | 126 + .../docs/resources/iis_site.md.erb | 142 + .../docs/resources/inetd_conf.md.erb | 99 + .../inspec-1.33.1/docs/resources/ini.md.erb | 69 + .../docs/resources/interface.md.erb | 66 + .../docs/resources/iptables.md.erb | 77 + .../inspec-1.33.1/docs/resources/json.md.erb | 76 + .../docs/resources/kernel_module.md.erb | 121 + .../docs/resources/kernel_parameter.md.erb | 72 + .../docs/resources/key_rsa.md.erb | 70 + .../docs/resources/launchd_service.md.erb | 76 + .../docs/resources/limits_conf.md.erb | 80 + .../docs/resources/login_def.md.erb | 77 + .../inspec-1.33.1/docs/resources/mount.md.erb | 83 + .../docs/resources/mssql_session.md.erb | 62 + .../docs/resources/mysql_conf.md.erb | 102 + .../docs/resources/mysql_session.md.erb | 75 + .../inspec-1.33.1/docs/resources/npm.md.erb | 75 + .../docs/resources/ntp_conf.md.erb | 76 + .../docs/resources/oneget.md.erb | 67 + .../docs/resources/oracledb_session.md.erb | 53 + .../inspec-1.33.1/docs/resources/os.md.erb | 154 + .../docs/resources/os_env.md.erb | 98 + .../docs/resources/package.md.erb | 121 + .../docs/resources/parse_config.md.erb | 122 + .../docs/resources/parse_config_file.md.erb | 149 + .../inspec-1.33.1/docs/resources/pip.md.erb | 74 + .../inspec-1.33.1/docs/resources/port.md.erb | 150 + .../docs/resources/postgres_conf.md.erb | 92 + .../docs/resources/postgres_hba_conf.md.erb | 104 + .../docs/resources/postgres_ident_conf.md.erb | 87 + .../docs/resources/postgres_session.md.erb | 82 + .../docs/resources/powershell.md.erb | 116 + .../docs/resources/processes.md.erb | 123 + .../docs/resources/rabbitmq_config.md.erb | 55 + .../docs/resources/registry_key.md.erb | 172 + .../docs/resources/runit_service.md.erb | 76 + .../docs/resources/security_policy.md.erb | 61 + .../docs/resources/service.md.erb | 135 + .../docs/resources/ssh_config.md.erb | 94 + .../docs/resources/sshd_config.md.erb | 97 + .../inspec-1.33.1/docs/resources/ssl.md.erb | 133 + .../docs/resources/sys_info.md.erb | 55 + .../docs/resources/systemd_service.md.erb | 76 + .../docs/resources/sysv_service.md.erb | 76 + .../docs/resources/upstart_service.md.erb | 76 + .../inspec-1.33.1/docs/resources/user.md.erb | 154 + .../inspec-1.33.1/docs/resources/users.md.erb | 140 + .../docs/resources/vbscript.md.erb | 69 + .../docs/resources/virtualization.md.erb | 71 + .../docs/resources/windows_feature.md.erb | 61 + .../docs/resources/windows_task.md.erb | 103 + .../inspec-1.33.1/docs/resources/wmi.md.erb | 95 + .../docs/resources/x509_certificate.md.erb | 146 + .../docs/resources/xinetd_conf.md.erb | 170 + .../inspec-1.33.1/docs/resources/yaml.md.erb | 83 + .../inspec-1.33.1/docs/resources/yum.md.erb | 111 + .../docs/resources/zfs_dataset.md.erb | 63 + .../docs/resources/zfs_pool.md.erb | 57 + .../gems/inspec-1.33.1/docs/ruby_usage.md | 204 + .../docs/shared/matcher_be.md.erb | 1 + .../docs/shared/matcher_cmp.md.erb | 43 + .../docs/shared/matcher_eq.md.erb | 3 + .../docs/shared/matcher_include.md.erb | 1 + .../docs/shared/matcher_match.md.erb | 1 + .../2.4.0/gems/inspec-1.33.1/docs/shell.md | 150 + .../gems/inspec-1.33.1/examples/README.md | 8 + .../examples/inheritance/README.md | 65 + .../examples/inheritance/controls/example.rb | 14 + .../examples/inheritance/inspec.yml | 15 + .../examples/kitchen-ansible/.kitchen.yml | 25 + .../examples/kitchen-ansible/Gemfile | 20 + .../examples/kitchen-ansible/README.md | 53 + .../examples/kitchen-ansible/files/nginx.repo | 6 + .../examples/kitchen-ansible/tasks/main.yml | 16 + .../test/integration/default/default.yml | 5 + .../test/integration/default/web_spec.rb | 28 + .../examples/kitchen-chef/.kitchen.yml | 20 + .../examples/kitchen-chef/Berksfile | 3 + .../examples/kitchen-chef/Gemfile | 20 + .../examples/kitchen-chef/README.md | 27 + .../examples/kitchen-chef/metadata.rb | 7 + .../examples/kitchen-chef/recipes/default.rb | 6 + .../examples/kitchen-chef/recipes/nginx.rb | 30 + .../test/integration/default/web_spec.rb | 28 + .../examples/kitchen-puppet/.kitchen.yml | 22 + .../examples/kitchen-puppet/Gemfile | 21 + .../examples/kitchen-puppet/Puppetfile | 25 + .../examples/kitchen-puppet/README.md | 53 + .../examples/kitchen-puppet/manifests/site.pp | 33 + .../examples/kitchen-puppet/metadata.json | 11 + .../test/integration/default/web_spec.rb | 28 + .../examples/meta-profile/README.md | 37 + .../examples/meta-profile/controls/example.rb | 13 + .../examples/meta-profile/inspec.yml | 13 + .../examples/profile-attribute/README.md | 14 + .../profile-attribute/controls/example.rb | 11 + .../examples/profile-attribute/inspec.yml | 8 + .../inspec-1.33.1/examples/profile/README.md | 48 + .../examples/profile/controls/example.rb | 23 + .../examples/profile/controls/gordon.rb | 36 + .../examples/profile/controls/meta.rb | 34 + .../inspec-1.33.1/examples/profile/inspec.yml | 10 + .../profile/libraries/gordon_config.rb | 53 + .../2.4.0/gems/inspec-1.33.1/inspec.gemspec | 48 + .../gems/little-plugger-1.1.4/.gitignore | 18 + .../gems/little-plugger-1.1.4/History.txt | 35 + .../gems/little-plugger-1.1.4/README.rdoc | 53 + .../2.4.0/gems/little-plugger-1.1.4/Rakefile | 30 + .../spec/little-plugger_spec.rb | 25 + .../little-plugger-1.1.4/spec/spec_helper.rb | 4 + .../ruby/2.4.0/gems/logging-2.2.2/.gitignore | 14 + .../ruby/2.4.0/gems/logging-2.2.2/.travis.yml | 14 + .../ruby/2.4.0/gems/logging-2.2.2/History.txt | 418 + .../ruby/2.4.0/gems/logging-2.2.2/LICENSE | 22 + .../ruby/2.4.0/gems/logging-2.2.2/README.md | 138 + .../ruby/2.4.0/gems/logging-2.2.2/Rakefile | 35 + .../gems/logging-2.2.2/examples/appenders.rb | 43 + .../gems/logging-2.2.2/examples/classes.rb | 41 + .../logging-2.2.2/examples/colorization.rb | 62 + .../examples/custom_log_levels.rb | 53 + .../2.4.0/gems/logging-2.2.2/examples/fork.rb | 37 + .../gems/logging-2.2.2/examples/formatting.rb | 51 + .../logging-2.2.2/examples/hierarchies.rb | 73 + .../gems/logging-2.2.2/examples/layouts.rb | 41 + .../2.4.0/gems/logging-2.2.2/examples/lazy.rb | 45 + .../gems/logging-2.2.2/examples/loggers.rb | 29 + .../2.4.0/gems/logging-2.2.2/examples/mdc.rb | 83 + .../gems/logging-2.2.2/examples/names.rb | 43 + .../gems/logging-2.2.2/examples/rails4.rb | 21 + .../logging-2.2.2/examples/reusing_layouts.rb | 51 + .../examples/rspec_integration.rb | 38 + .../gems/logging-2.2.2/examples/simple.rb | 17 + .../2.4.0/gems/logging-2.2.2/logging.gemspec | 46 + .../2.4.0/gems/logging-2.2.2/script/bootstrap | 15 + .../2.4.0/gems/logging-2.2.2/script/console | 8 + .../test/appenders/test_async_flushing.rb | 194 + .../test/appenders/test_buffered_io.rb | 226 + .../test/appenders/test_console.rb | 73 + .../logging-2.2.2/test/appenders/test_file.rb | 135 + .../logging-2.2.2/test/appenders/test_io.rb | 127 + .../test/appenders/test_rolling_file.rb | 323 + .../test/appenders/test_string_io.rb | 36 + .../test/appenders/test_syslog.rb | 200 + .../gems/logging-2.2.2/test/benchmark.rb | 113 + .../logging-2.2.2/test/layouts/test_basic.rb | 41 + .../test/layouts/test_color_pattern.rb | 90 + .../logging-2.2.2/test/layouts/test_json.rb | 185 + .../test/layouts/test_nested_exceptions.rb | 124 + .../test/layouts/test_pattern.rb | 249 + .../logging-2.2.2/test/layouts/test_yaml.rb | 180 + .../gems/logging-2.2.2/test/performance.rb | 66 + .../2.4.0/gems/logging-2.2.2/test/setup.rb | 34 + .../gems/logging-2.2.2/test/test_appender.rb | 205 + .../logging-2.2.2/test/test_color_scheme.rb | 39 + .../gems/logging-2.2.2/test/test_filter.rb | 33 + .../gems/logging-2.2.2/test/test_layout.rb | 165 + .../gems/logging-2.2.2/test/test_log_event.rb | 87 + .../gems/logging-2.2.2/test/test_logger.rb | 739 + .../gems/logging-2.2.2/test/test_logging.rb | 258 + .../test/test_mapped_diagnostic_context.rb | 135 + .../test/test_nested_diagnostic_context.rb | 103 + .../gems/logging-2.2.2/test/test_proxy.rb | 73 + .../logging-2.2.2/test/test_repository.rb | 149 + .../logging-2.2.2/test/test_root_logger.rb | 80 + .../gems/logging-2.2.2/test/test_utils.rb | 79 + .../2.4.0/gems/method_source-0.8.2/.gemtest | 0 .../gems/method_source-0.8.2/.travis.yml | 13 + .../2.4.0/gems/method_source-0.8.2/.yardopts | 1 + .../2.4.0/gems/method_source-0.8.2/Gemfile | 2 + .../2.4.0/gems/method_source-0.8.2/LICENSE | 25 + .../gems/method_source-0.8.2/README.markdown | 91 + .../2.4.0/gems/method_source-0.8.2/Rakefile | 79 + .../method_source-0.8.2/method_source.gemspec | 33 + .../gems/method_source-0.8.2/test/test.rb | 138 + .../test/test_code_helpers.rb | 41 + .../method_source-0.8.2/test/test_helper.rb | 98 + .../ruby/2.4.0/gems/mixlib-log-1.7.1/.gemtest | 0 .../ruby/2.4.0/gems/mixlib-log-1.7.1/Gemfile | 9 + .../ruby/2.4.0/gems/mixlib-log-1.7.1/LICENSE | 201 + .../ruby/2.4.0/gems/mixlib-log-1.7.1/NOTICE | 28 + .../2.4.0/gems/mixlib-log-1.7.1/README.md | 51 + .../ruby/2.4.0/gems/mixlib-log-1.7.1/Rakefile | 43 + .../gems/mixlib-log-1.7.1/mixlib-log.gemspec | 21 + .../spec/mixlib/log/formatter_spec.rb | 51 + .../mixlib-log-1.7.1/spec/mixlib/log_spec.rb | 190 + .../gems/mixlib-log-1.7.1/spec/spec_helper.rb | 29 + .../2.4.0/gems/mixlib-shellout-2.3.2/Gemfile | 15 + .../2.4.0/gems/mixlib-shellout-2.3.2/LICENSE | 201 + .../gems/mixlib-shellout-2.3.2/README.md | 91 + .../2.4.0/gems/mixlib-shellout-2.3.2/Rakefile | 16 + .../mixlib-shellout-windows.gemspec | 8 + .../mixlib-shellout.gemspec | 25 + .../2.4.0/gems/multi_json-1.12.1/CHANGELOG.md | 245 + .../gems/multi_json-1.12.1/CONTRIBUTING.md | 46 + .../2.4.0/gems/multi_json-1.12.1/LICENSE.md | 20 + .../2.4.0/gems/multi_json-1.12.1/README.md | 121 + .../gems/multi_json-1.12.1/multi_json.gemspec | 20 + .../gems/multipart-post-2.0.0/.gitignore | 6 + .../gems/multipart-post-2.0.0/.travis.yml | 7 + .../2.4.0/gems/multipart-post-2.0.0/Gemfile | 14 + .../gems/multipart-post-2.0.0/History.txt | 60 + .../gems/multipart-post-2.0.0/Manifest.txt | 9 + .../2.4.0/gems/multipart-post-2.0.0/README.md | 77 + .../2.4.0/gems/multipart-post-2.0.0/Rakefile | 9 + .../multipart-post.gemspec | 22 + .../multipart-post-2.0.0/test/multibyte.txt | 1 + .../test/net/http/post/test_multipart.rb | 110 + .../test/test_composite_io.rb | 115 + .../multipart-post-2.0.0/test/test_parts.rb | 86 + .../ruby/2.4.0/gems/net-scp-1.2.1/.travis.yml | 11 + .../ruby/2.4.0/gems/net-scp-1.2.1/CHANGES.txt | 50 + .../ruby/2.4.0/gems/net-scp-1.2.1/LICENSE.txt | 19 + .../ruby/2.4.0/gems/net-scp-1.2.1/Manifest | 17 + .../ruby/2.4.0/gems/net-scp-1.2.1/README.rdoc | 121 + .../ruby/2.4.0/gems/net-scp-1.2.1/Rakefile | 60 + .../gems/net-scp-1.2.1/gem-public_cert.pem | 20 + .../2.4.0/gems/net-scp-1.2.1/net-scp.gemspec | 69 + .../ruby/2.4.0/gems/net-scp-1.2.1/setup.rb | 1331 + .../2.4.0/gems/net-scp-1.2.1/test/common.rb | 153 + .../2.4.0/gems/net-scp-1.2.1/test/test_all.rb | 3 + .../gems/net-scp-1.2.1/test/test_download.rb | 197 + .../2.4.0/gems/net-scp-1.2.1/test/test_scp.rb | 60 + .../gems/net-scp-1.2.1/test/test_upload.rb | 269 + .../ruby/2.4.0/gems/net-ssh-4.1.0/.gitignore | 6 + .../2.4.0/gems/net-ssh-4.1.0/.rubocop.yml | 5 + .../gems/net-ssh-4.1.0/.rubocop_todo.yml | 1129 + .../ruby/2.4.0/gems/net-ssh-4.1.0/.travis.yml | 51 + .../ruby/2.4.0/gems/net-ssh-4.1.0/CHANGES.txt | 574 + .../ruby/2.4.0/gems/net-ssh-4.1.0/Gemfile | 17 + .../2.4.0/gems/net-ssh-4.1.0/Gemfile.norbnacl | 10 + .../gems/net-ssh-4.1.0/Gemfile.norbnacl.lock | 41 + .../gems/net-ssh-4.1.0/ISSUE_TEMPLATE.md | 30 + .../ruby/2.4.0/gems/net-ssh-4.1.0/LICENSE.txt | 19 + .../ruby/2.4.0/gems/net-ssh-4.1.0/Manifest | 133 + .../ruby/2.4.0/gems/net-ssh-4.1.0/README.rdoc | 169 + .../ruby/2.4.0/gems/net-ssh-4.1.0/Rakefile | 93 + .../ruby/2.4.0/gems/net-ssh-4.1.0/THANKS.txt | 110 + .../2.4.0/gems/net-ssh-4.1.0/appveyor.yml | 52 + .../net-ssh-4.1.0/net-ssh-public_cert.pem | 21 + .../2.4.0/gems/net-ssh-4.1.0/net-ssh.gemspec | 43 + .../net-ssh-4.1.0/support/arcfour_check.rb | 20 + .../net-ssh-4.1.0/support/ssh_tunnel_bug.rb | 65 + .../ruby/2.4.0/gems/nori-2.6.0/.gitignore | 8 + .../bundle/ruby/2.4.0/gems/nori-2.6.0/.rspec | 1 + .../ruby/2.4.0/gems/nori-2.6.0/.travis.yml | 11 + .../ruby/2.4.0/gems/nori-2.6.0/CHANGELOG.md | 212 + .../bundle/ruby/2.4.0/gems/nori-2.6.0/Gemfile | 9 + .../bundle/ruby/2.4.0/gems/nori-2.6.0/LICENSE | 20 + .../ruby/2.4.0/gems/nori-2.6.0/README.md | 87 + .../ruby/2.4.0/gems/nori-2.6.0/Rakefile | 12 + .../gems/nori-2.6.0/benchmark/benchmark.rb | 19 + .../nori-2.6.0/benchmark/soap_response.xml | 266 + .../ruby/2.4.0/gems/nori-2.6.0/nori.gemspec | 26 + .../gems/nori-2.6.0/spec/nori/api_spec.rb | 184 + .../spec/nori/core_ext/hash_spec.rb | 30 + .../spec/nori/core_ext/object_spec.rb | 19 + .../spec/nori/core_ext/string_spec.rb | 33 + .../gems/nori-2.6.0/spec/nori/nori_spec.rb | 645 + .../2.4.0/gems/nori-2.6.0/spec/spec_helper.rb | 2 + .../gems/parallel-1.12.0/MIT-LICENSE.txt | 20 + .../ruby/2.4.0/gems/parslet-1.5.0/HISTORY.txt | 211 + .../ruby/2.4.0/gems/parslet-1.5.0/LICENSE | 23 + .../ruby/2.4.0/gems/parslet-1.5.0/README | 70 + .../ruby/2.4.0/gems/parslet-1.5.0/Rakefile | 30 + .../parslet-1.5.0/example/boolean_algebra.rb | 70 + .../2.4.0/gems/parslet-1.5.0/example/calc.rb | 153 + .../gems/parslet-1.5.0/example/capture.rb | 49 + .../gems/parslet-1.5.0/example/comments.rb | 35 + .../parslet-1.5.0/example/deepest_errors.rb | 131 + .../parslet-1.5.0/example/documentation.rb | 18 + .../parslet-1.5.0/example/email_parser.rb | 52 + .../2.4.0/gems/parslet-1.5.0/example/empty.rb | 13 + .../2.4.0/gems/parslet-1.5.0/example/erb.rb | 47 + .../gems/parslet-1.5.0/example/ignore.rb | 33 + .../gems/parslet-1.5.0/example/ip_address.rb | 125 + .../2.4.0/gems/parslet-1.5.0/example/json.rb | 128 + .../2.4.0/gems/parslet-1.5.0/example/local.rb | 34 + .../2.4.0/gems/parslet-1.5.0/example/mathn.rb | 44 + .../gems/parslet-1.5.0/example/minilisp.rb | 94 + .../gems/parslet-1.5.0/example/modularity.rb | 47 + .../parslet-1.5.0/example/nested_errors.rb | 132 + .../example/output/documentation.err | 4 + .../parslet-1.5.0/example/output/empty.err | 1 + .../gems/parslet-1.5.0/example/parens.rb | 42 + .../gems/parslet-1.5.0/example/readme.rb | 30 + .../gems/parslet-1.5.0/example/scopes.rb | 15 + .../gems/parslet-1.5.0/example/seasons.rb | 46 + .../gems/parslet-1.5.0/example/sentence.rb | 36 + .../gems/parslet-1.5.0/example/simple.lit | 3 + .../gems/parslet-1.5.0/example/simple_xml.rb | 54 + .../parslet-1.5.0/example/string_parser.rb | 77 + .../2.4.0/gems/parslet-1.5.0/example/test.lit | 4 + .../ruby/2.4.0/gems/pry-0.10.4/CHANGELOG.md | 718 + .../bundle/ruby/2.4.0/gems/pry-0.10.4/LICENSE | 25 + .../ruby/2.4.0/gems/pry-0.10.4/README.md | 406 + .../bundle/ruby/2.4.0/gems/pry-0.10.4/bin/pry | 16 + .../ruby/2.4.0/gems/rainbow-2.2.2/.gitignore | 17 + .../2.4.0/gems/rainbow-2.2.2/.rubocop.yml | 14 + .../ruby/2.4.0/gems/rainbow-2.2.2/.travis.yml | 22 + .../2.4.0/gems/rainbow-2.2.2/Changelog.md | 87 + .../ruby/2.4.0/gems/rainbow-2.2.2/Gemfile | 23 + .../ruby/2.4.0/gems/rainbow-2.2.2/Guardfile | 9 + .../ruby/2.4.0/gems/rainbow-2.2.2/LICENSE | 20 + .../2.4.0/gems/rainbow-2.2.2/README.markdown | 217 + .../ruby/2.4.0/gems/rainbow-2.2.2/Rakefile | 6 + .../2.4.0/gems/rainbow-2.2.2/ext/Rakefile | 1 + .../2.4.0/gems/rainbow-2.2.2/ext/mkrf_conf.rb | 22 + .../2.4.0/gems/rainbow-2.2.2/rainbow.gemspec | 26 + .../spec/integration/instance_spec.rb | 35 + .../spec/integration/rainbow_spec.rb | 160 + .../spec/integration/string_spec.rb | 84 + .../gems/rainbow-2.2.2/spec/spec_helper.rb | 6 + .../spec/support/presenter_shared_examples.rb | 9 + .../rainbow-2.2.2/spec/unit/color_spec.rb | 301 + .../rainbow-2.2.2/spec/unit/namespace_spec.rb | 31 + .../spec/unit/null_presenter_spec.rb | 111 + .../rainbow-2.2.2/spec/unit/presenter_spec.rb | 201 + .../spec/unit/string_utils_spec.rb | 62 + .../rainbow-2.2.2/spec/unit/wrapper_spec.rb | 34 + .../ruby/2.4.0/gems/rake-12.0.0/.gitignore | 14 + .../ruby/2.4.0/gems/rake-12.0.0/.rubocop.yml | 57 + .../ruby/2.4.0/gems/rake-12.0.0/.travis.yml | 21 + .../2.4.0/gems/rake-12.0.0/CONTRIBUTING.rdoc | 36 + .../ruby/2.4.0/gems/rake-12.0.0/Gemfile | 3 + .../ruby/2.4.0/gems/rake-12.0.0/History.rdoc | 2247 + .../ruby/2.4.0/gems/rake-12.0.0/MIT-LICENSE | 21 + .../ruby/2.4.0/gems/rake-12.0.0/README.rdoc | 156 + .../ruby/2.4.0/gems/rake-12.0.0/Rakefile | 38 + .../ruby/2.4.0/gems/rake-12.0.0/appveyor.yml | 21 + .../ruby/2.4.0/gems/rake-12.0.0/bin/console | 7 + .../ruby/2.4.0/gems/rake-12.0.0/bin/setup | 6 + .../rake-12.0.0/doc/command_line_usage.rdoc | 158 + .../gems/rake-12.0.0/doc/example/Rakefile1 | 38 + .../gems/rake-12.0.0/doc/example/Rakefile2 | 35 + .../2.4.0/gems/rake-12.0.0/doc/example/a.c | 6 + .../2.4.0/gems/rake-12.0.0/doc/example/b.c | 6 + .../2.4.0/gems/rake-12.0.0/doc/example/main.c | 11 + .../2.4.0/gems/rake-12.0.0/doc/glossary.rdoc | 42 + .../ruby/2.4.0/gems/rake-12.0.0/doc/jamis.rb | 591 + .../gems/rake-12.0.0/doc/proto_rake.rdoc | 127 + .../ruby/2.4.0/gems/rake-12.0.0/doc/rake.1 | 156 + .../2.4.0/gems/rake-12.0.0/doc/rakefile.rdoc | 622 + .../2.4.0/gems/rake-12.0.0/doc/rational.rdoc | 151 + .../ruby/2.4.0/gems/rake-12.0.0/exe/rake | 27 + .../ruby/2.4.0/gems/rake-12.0.0/rake.gemspec | 39 + .../ruby/2.4.0/gems/rspec-3.6.0/LICENSE.md | 27 + .../ruby/2.4.0/gems/rspec-3.6.0/README.md | 39 + .../2.4.0/gems/rspec-core-3.6.0/.document | 5 + .../2.4.0/gems/rspec-core-3.6.0/.yardopts | 8 + .../2.4.0/gems/rspec-core-3.6.0/Changelog.md | 2167 + .../2.4.0/gems/rspec-core-3.6.0/LICENSE.md | 26 + .../2.4.0/gems/rspec-core-3.6.0/README.md | 384 + .../2.4.0/gems/rspec-core-3.6.0/exe/rspec | 4 + .../gems/rspec-expectations-3.6.0/.document | 5 + .../gems/rspec-expectations-3.6.0/.yardopts | 6 + .../rspec-expectations-3.6.0/Changelog.md | 1072 + .../gems/rspec-expectations-3.6.0/LICENSE.md | 25 + .../gems/rspec-expectations-3.6.0/README.md | 305 + .../2.4.0/gems/rspec-its-1.2.0/.gitignore | 19 + .../ruby/2.4.0/gems/rspec-its-1.2.0/.rspec | 3 + .../2.4.0/gems/rspec-its-1.2.0/.travis.yml | 24 + .../2.4.0/gems/rspec-its-1.2.0/Changelog.md | 49 + .../ruby/2.4.0/gems/rspec-its-1.2.0/Gemfile | 26 + .../2.4.0/gems/rspec-its-1.2.0/LICENSE.txt | 27 + .../ruby/2.4.0/gems/rspec-its-1.2.0/README.md | 72 + .../ruby/2.4.0/gems/rspec-its-1.2.0/Rakefile | 16 + .../2.4.0/gems/rspec-its-1.2.0/cucumber.yml | 2 + .../gems/rspec-its-1.2.0/features/its.feature | 125 + .../step_definitions/additional_cli_steps.rb | 21 + .../rspec-its-1.2.0/features/support/env.rb | 23 + .../gems/rspec-its-1.2.0/rspec-its.gemspec | 28 + .../gems/rspec-its-1.2.0/script/test_all | 20 + .../rspec-its-1.2.0/spec/rspec/its_spec.rb | 237 + .../gems/rspec-its-1.2.0/spec/spec_helper.rb | 15 + .../2.4.0/gems/rspec-mocks-3.6.0/.document | 5 + .../2.4.0/gems/rspec-mocks-3.6.0/.yardopts | 6 + .../2.4.0/gems/rspec-mocks-3.6.0/Changelog.md | 1073 + .../2.4.0/gems/rspec-mocks-3.6.0/LICENSE.md | 25 + .../2.4.0/gems/rspec-mocks-3.6.0/README.md | 460 + .../gems/rspec-support-3.6.0/Changelog.md | 211 + .../2.4.0/gems/rspec-support-3.6.0/LICENSE.md | 23 + .../2.4.0/gems/rspec-support-3.6.0/README.md | 40 + .../ruby/2.4.0/gems/rubyntlm-0.6.2/.gitignore | 4 + .../ruby/2.4.0/gems/rubyntlm-0.6.2/.rspec | 2 + .../2.4.0/gems/rubyntlm-0.6.2/.travis.yml | 13 + .../2.4.0/gems/rubyntlm-0.6.2/CHANGELOG.md | 118 + .../ruby/2.4.0/gems/rubyntlm-0.6.2/Gemfile | 3 + .../ruby/2.4.0/gems/rubyntlm-0.6.2/LICENSE | 20 + .../ruby/2.4.0/gems/rubyntlm-0.6.2/README.md | 48 + .../ruby/2.4.0/gems/rubyntlm-0.6.2/Rakefile | 25 + .../gems/rubyntlm-0.6.2/examples/http.rb | 86 + .../gems/rubyntlm-0.6.2/examples/imap.rb | 73 + .../gems/rubyntlm-0.6.2/examples/smtp.rb | 94 + .../gems/rubyntlm-0.6.2/rubyntlm.gemspec | 29 + .../gems/rubyntlm-0.6.2/spec/spec_helper.rb | 22 + .../support/certificates/sha_256_hash.pem | 19 + .../shared/examples/net/ntlm/field_shared.rb | 25 + .../examples/net/ntlm/fieldset_shared.rb | 239 + .../shared/examples/net/ntlm/int_shared.rb | 43 + .../examples/net/ntlm/message_shared.rb | 35 + .../ruby/2.4.0/gems/rubyzip-1.2.1/README.md | 306 + .../ruby/2.4.0/gems/rubyzip-1.2.1/Rakefile | 18 + .../bundle/ruby/2.4.0/gems/rubyzip-1.2.1/TODO | 15 + .../gems/rubyzip-1.2.1/samples/example.rb | 81 + .../samples/example_filesystem.rb | 31 + .../samples/example_recursive.rb | 55 + .../rubyzip-1.2.1/samples/gtk_ruby_zip.rb | 84 + .../2.4.0/gems/rubyzip-1.2.1/samples/qtzip.rb | 92 + .../rubyzip-1.2.1/samples/write_simple.rb | 12 + .../gems/rubyzip-1.2.1/samples/zipfind.rb | 66 + .../rubyzip-1.2.1/test/basic_zip_file_test.rb | 60 + .../test/case_sensitivity_test.rb | 69 + .../test/central_directory_entry_test.rb | 69 + .../test/central_directory_test.rb | 100 + .../test/crypto/null_encryption_test.rb | 57 + .../crypto/traditional_encryption_test.rb | 80 + .../test/data/WarnInvalidDate.zip | Bin 0 -> 29204 bytes .../gems/rubyzip-1.2.1/test/data/file1.txt | 46 + .../test/data/file1.txt.deflatedData | Bin 0 -> 482 bytes .../gems/rubyzip-1.2.1/test/data/file2.txt | 1504 + .../gems/rubyzip-1.2.1/test/data/globTest.zip | Bin 0 -> 1146 bytes .../rubyzip-1.2.1/test/data/globTest/foo.txt | 0 .../test/data/globTest/foo/bar/baz/foo.txt | 0 .../rubyzip-1.2.1/test/data/globTest/food.txt | 0 .../gems/rubyzip-1.2.1/test/data/mimetype | 1 + .../rubyzip-1.2.1/test/data/notzippedruby.rb | 7 + .../gems/rubyzip-1.2.1/test/data/ntfs.zip | Bin 0 -> 165 bytes .../rubyzip-1.2.1/test/data/oddExtraField.zip | Bin 0 -> 4034 bytes .../gems/rubyzip-1.2.1/test/data/rubycode.zip | Bin 0 -> 617 bytes .../rubyzip-1.2.1/test/data/rubycode2.zip | Bin 0 -> 261 bytes .../gems/rubyzip-1.2.1/test/data/test.xls | Bin 0 -> 188416 bytes .../rubyzip-1.2.1/test/data/testDirectory.bin | Bin 0 -> 303 bytes .../rubyzip-1.2.1/test/data/zip64-sample.zip | Bin 0 -> 816 bytes .../rubyzip-1.2.1/test/data/zipWithDirs.zip | Bin 0 -> 1934 bytes .../test/data/zipWithEncryption.zip | Bin 0 -> 612 bytes .../gems/rubyzip-1.2.1/test/deflater_test.rb | 65 + .../rubyzip-1.2.1/test/encryption_test.rb | 42 + .../gems/rubyzip-1.2.1/test/entry_set_test.rb | 163 + .../gems/rubyzip-1.2.1/test/entry_test.rb | 154 + .../gems/rubyzip-1.2.1/test/errors_test.rb | 34 + .../rubyzip-1.2.1/test/extra_field_test.rb | 76 + .../test/file_extract_directory_test.rb | 54 + .../rubyzip-1.2.1/test/file_extract_test.rb | 83 + .../test/file_permissions_test.rb | 69 + .../rubyzip-1.2.1/test/file_split_test.rb | 57 + .../gems/rubyzip-1.2.1/test/file_test.rb | 583 + .../test/filesystem/dir_iterator_test.rb | 58 + .../test/filesystem/directory_test.rb | 121 + .../test/filesystem/file_mutating_test.rb | 88 + .../test/filesystem/file_nonmutating_test.rb | 508 + .../test/filesystem/file_stat_test.rb | 64 + .../gems/rubyzip-1.2.1/test/gentestfiles.rb | 126 + .../gems/rubyzip-1.2.1/test/inflater_test.rb | 14 + .../rubyzip-1.2.1/test/input_stream_test.rb | 182 + .../ioextras/abstract_input_stream_test.rb | 102 + .../ioextras/abstract_output_stream_test.rb | 106 + .../test/ioextras/fake_io_test.rb | 18 + .../rubyzip-1.2.1/test/local_entry_test.rb | 154 + .../rubyzip-1.2.1/test/output_stream_test.rb | 128 + .../test/pass_thru_compressor_test.rb | 30 + .../test/pass_thru_decompressor_test.rb | 14 + .../test/samples/example_recursive_test.rb | 37 + .../gems/rubyzip-1.2.1/test/settings_test.rb | 95 + .../gems/rubyzip-1.2.1/test/test_helper.rb | 234 + .../unicode_file_names_and_comments_test.rb | 50 + .../rubyzip-1.2.1/test/zip64_full_test.rb | 51 + .../rubyzip-1.2.1/test/zip64_support_test.rb | 14 + .../ruby/2.4.0/gems/semverse-2.0.0/.gitignore | 17 + .../2.4.0/gems/semverse-2.0.0/.travis.yml | 13 + .../ruby/2.4.0/gems/semverse-2.0.0/Gemfile | 29 + .../ruby/2.4.0/gems/semverse-2.0.0/Guardfile | 11 + .../ruby/2.4.0/gems/semverse-2.0.0/LICENSE | 201 + .../ruby/2.4.0/gems/semverse-2.0.0/README.md | 40 + .../ruby/2.4.0/gems/semverse-2.0.0/Rakefile | 6 + .../gems/semverse-2.0.0/semverse.gemspec | 24 + .../gems/semverse-2.0.0/spec/spec_helper.rb | 24 + .../spec/unit/semverse/constraint_spec.rb | 711 + .../spec/unit/semverse/version_spec.rb | 370 + .../semverse-2.0.0/spec/unit/semverse_spec.rb | 4 + .../ruby/2.4.0/gems/slop-3.6.0/.gitignore | 7 + .../ruby/2.4.0/gems/slop-3.6.0/.travis.yml | 9 + .../ruby/2.4.0/gems/slop-3.6.0/CHANGES.md | 309 + .../bundle/ruby/2.4.0/gems/slop-3.6.0/Gemfile | 3 + .../bundle/ruby/2.4.0/gems/slop-3.6.0/LICENSE | 20 + .../ruby/2.4.0/gems/slop-3.6.0/README.md | 202 + .../ruby/2.4.0/gems/slop-3.6.0/Rakefile | 29 + .../ruby/2.4.0/gems/slop-3.6.0/slop.gemspec | 17 + .../gems/slop-3.6.0/test/commands_test.rb | 26 + .../ruby/2.4.0/gems/slop-3.6.0/test/helper.rb | 12 + .../2.4.0/gems/slop-3.6.0/test/option_test.rb | 145 + .../2.4.0/gems/slop-3.6.0/test/slop_test.rb | 518 + .../ruby/2.4.0/gems/sslshake-1.2.0/.gitignore | 6 + .../ruby/2.4.0/gems/sslshake-1.2.0/Gemfile | 12 + .../ruby/2.4.0/gems/sslshake-1.2.0/README.md | 25 + .../gems/sslshake-1.2.0/sslshake.gemspec | 18 + .../ruby/2.4.0/gems/thor-0.19.4/.document | 5 + .../ruby/2.4.0/gems/thor-0.19.4/CHANGELOG.md | 163 + .../2.4.0/gems/thor-0.19.4/CONTRIBUTING.md | 15 + .../ruby/2.4.0/gems/thor-0.19.4/LICENSE.md | 20 + .../ruby/2.4.0/gems/thor-0.19.4/README.md | 47 + .../ruby/2.4.0/gems/thor-0.19.4/bin/thor | 6 + .../ruby/2.4.0/gems/thor-0.19.4/thor.gemspec | 21 + .../ruby/2.4.0/gems/toml-0.1.2/CHANGELOG.md | 11 + .../bundle/ruby/2.4.0/gems/toml-0.1.2/LICENSE | 21 + .../ruby/2.4.0/gems/toml-0.1.2/README.md | 65 + .../ruby/2.4.0/gems/train-0.26.0/.rubocop.yml | 73 + .../ruby/2.4.0/gems/train-0.26.0/CHANGELOG.md | 541 + .../ruby/2.4.0/gems/train-0.26.0/Gemfile | 36 + .../ruby/2.4.0/gems/train-0.26.0/LICENSE | 201 + .../ruby/2.4.0/gems/train-0.26.0/README.md | 175 + .../ruby/2.4.0/gems/train-0.26.0/Rakefile | 148 + .../test/integration/.kitchen.yml | 43 + .../train-0.26.0/test/integration/Berksfile | 3 + .../test/integration/bootstrap.sh | 20 + .../train-0.26.0/test/integration/chefignore | 1 + .../integration/cookbooks/test/metadata.rb | 1 + .../cookbooks/test/recipes/default.rb | 100 + .../cookbooks/test/recipes/prep_files.rb | 52 + .../test/integration/docker_run.rb | 153 + .../test/integration/docker_test.rb | 24 + .../test/integration/docker_test_container.rb | 24 + .../train-0.26.0/test/integration/helper.rb | 61 + .../test/integration/sudo/customcommand.rb | 15 + .../test/integration/sudo/nopasswd.rb | 16 + .../test/integration/sudo/passwd.rb | 21 + .../test/integration/sudo/reqtty.rb | 17 + .../test/integration/sudo/run_as.rb | 12 + .../test/integration/test-travis-centos.yml | 6 + .../test/integration/test-travis-debian.yml | 6 + .../test/integration/test-travis-fedora.yml | 8 + .../test/integration/test-travis-oel.yml | 6 + .../test/integration/test-travis-ubuntu.yml | 8 + .../test/integration/test_local.rb | 19 + .../train-0.26.0/test/integration/test_ssh.rb | 39 + .../tests/path_block_device_test.rb | 74 + .../tests/path_character_device_test.rb | 74 + .../test/integration/tests/path_file_test.rb | 92 + .../integration/tests/path_folder_test.rb | 90 + .../integration/tests/path_missing_test.rb | 77 + .../test/integration/tests/path_pipe_test.rb | 78 + .../integration/tests/path_symlink_test.rb | 95 + .../integration/tests/run_command_test.rb | 35 + .../test/unit/extras/command_wrapper_test.rb | 110 + .../test/unit/extras/file_common_test.rb | 180 + .../test/unit/extras/linux_file_test.rb | 167 + .../test/unit/extras/os_common_test.rb | 299 + .../test/unit/extras/os_detect_linux_test.rb | 230 + .../unit/extras/os_detect_windows_test.rb | 104 + .../test/unit/extras/stat_test.rb | 210 + .../test/unit/extras/windows_file_test.rb | 44 + .../gems/train-0.26.0/test/unit/helper.rb | 7 + .../test/unit/plugins/connection_test.rb | 44 + .../test/unit/plugins/transport_test.rb | 111 + .../train-0.26.0/test/unit/plugins_test.rb | 22 + .../gems/train-0.26.0/test/unit/train_test.rb | 209 + .../test/unit/transports/local_file_test.rb | 184 + .../test/unit/transports/local_test.rb | 91 + .../test/unit/transports/mock_test.rb | 105 + .../test/unit/transports/ssh_test.rb | 146 + .../train-0.26.0/test/unit/version_test.rb | 8 + .../train-0.26.0/test/windows/local_test.rb | 46 + .../train-0.26.0/test/windows/winrm_test.rb | 52 + .../2.4.0/gems/train-0.26.0/train.gemspec | 38 + .../ruby/2.4.0/gems/unf-0.1.4/.gitignore | 17 + .../ruby/2.4.0/gems/unf-0.1.4/.travis.yml | 17 + .../ruby/2.4.0/gems/unf-0.1.4/CHANGELOG.md | 46 + .../bundle/ruby/2.4.0/gems/unf-0.1.4/Gemfile | 4 + .../bundle/ruby/2.4.0/gems/unf-0.1.4/LICENSE | 24 + .../ruby/2.4.0/gems/unf-0.1.4/README.md | 39 + .../bundle/ruby/2.4.0/gems/unf-0.1.4/Rakefile | 21 + .../ruby/2.4.0/gems/unf-0.1.4/test/helper.rb | 18 + .../unf-0.1.4/test/normalization-test.txt | 108816 ++++++++++++++ .../2.4.0/gems/unf-0.1.4/test/test_unf.rb | 41 + .../ruby/2.4.0/gems/unf-0.1.4/unf.gemspec | 35 + .../ruby/2.4.0/gems/unf_ext-0.0.7.4/.document | 5 + .../2.4.0/gems/unf_ext-0.0.7.4/.gitignore | 19 + .../2.4.0/gems/unf_ext-0.0.7.4/.travis.yml | 23 + .../2.4.0/gems/unf_ext-0.0.7.4/CHANGELOG.md | 34 + .../ruby/2.4.0/gems/unf_ext-0.0.7.4/Gemfile | 4 + .../2.4.0/gems/unf_ext-0.0.7.4/LICENSE.txt | 22 + .../ruby/2.4.0/gems/unf_ext-0.0.7.4/README.md | 57 + .../ruby/2.4.0/gems/unf_ext-0.0.7.4/Rakefile | 31 + .../ext/unf_ext/.sitearchdir.time | 0 .../unf_ext-0.0.7.4/ext/unf_ext/extconf.rb | 30 + .../gems/unf_ext-0.0.7.4/ext/unf_ext/unf.cc | 75 + .../ext/unf_ext/unf/normalizer.hh | 139 + .../unf_ext-0.0.7.4/ext/unf_ext/unf/table.hh | 13617 ++ .../ext/unf_ext/unf/trie/char_stream.hh | 150 + .../ext/unf_ext/unf/trie/node.hh | 25 + .../ext/unf_ext/unf/trie/searcher.hh | 194 + .../unf_ext-0.0.7.4/ext/unf_ext/unf/util.hh | 24 + .../ext/unf_ext/unf_ext.bundle | Bin 0 -> 425732 bytes .../2.4.0/gems/unf_ext-0.0.7.4/test/helper.rb | 18 + .../test/normalization-test.txt | 112332 +++++++++++++++ .../gems/unf_ext-0.0.7.4/test/test_unf_ext.rb | 41 + .../gems/unf_ext-0.0.7.4/unf_ext.gemspec | 42 + .../ruby/2.4.0/gems/winrm-2.2.3/.gitignore | 10 + .../ruby/2.4.0/gems/winrm-2.2.3/.rubocop.yml | 26 + .../ruby/2.4.0/gems/winrm-2.2.3/.travis.yml | 11 + .../ruby/2.4.0/gems/winrm-2.2.3/Gemfile | 3 + .../ruby/2.4.0/gems/winrm-2.2.3/LICENSE | 202 + .../ruby/2.4.0/gems/winrm-2.2.3/README.md | 276 + .../ruby/2.4.0/gems/winrm-2.2.3/Rakefile | 34 + .../ruby/2.4.0/gems/winrm-2.2.3/Vagrantfile | 6 + .../2.4.0/gems/winrm-2.2.3/WinrmAppveyor.psm1 | 32 + .../ruby/2.4.0/gems/winrm-2.2.3/appveyor.yml | 51 + .../ruby/2.4.0/gems/winrm-2.2.3/bin/rwinrm | 97 + .../ruby/2.4.0/gems/winrm-2.2.3/changelog.md | 128 + .../ruby/2.4.0/gems/winrm-2.2.3/preamble | 17 + .../tests/integration/auth_timeout_spec.rb | 18 + .../winrm-2.2.3/tests/integration/cmd_spec.rb | 131 + .../tests/integration/config-example.yml | 16 + .../tests/integration/issue_59_spec.rb | 26 + .../tests/integration/powershell_spec.rb | 165 + .../tests/integration/spec_helper.rb | 65 + .../tests/integration/transport_spec.rb | 99 + .../winrm-2.2.3/tests/integration/wql_spec.rb | 34 + .../2.4.0/gems/winrm-2.2.3/tests/matchers.rb | 60 + .../tests/spec/configuration_spec.rb | 184 + .../winrm-2.2.3/tests/spec/connection_spec.rb | 39 + .../winrm-2.2.3/tests/spec/exception_spec.rb | 50 + .../tests/spec/http/transport_factory_spec.rb | 68 + .../tests/spec/http/transport_spec.rb | 44 + .../winrm-2.2.3/tests/spec/output_spec.rb | 127 + .../tests/spec/psrp/fragment_spec.rb | 62 + .../tests/spec/psrp/message_data/base_spec.rb | 13 + .../psrp/message_data/error_record_spec.rb | 41 + .../message_data/pipeline_host_call_spec.rb | 25 + .../psrp/message_data/pipeline_output_spec.rb | 32 + .../psrp/message_data/pipeline_state_spec.rb | 40 + .../runspace_pool_host_call_spec.rb | 25 + .../message_data/runspacepool_state_spec.rb | 16 + .../message_data/session_capability_spec.rb | 30 + .../tests/spec/psrp/message_data_spec.rb | 35 + .../spec/psrp/message_defragmenter_spec.rb | 47 + .../spec/psrp/message_fragmenter_spec.rb | 105 + .../psrp/powershell_output_decoder_spec.rb | 100 + .../tests/spec/psrp/psrp_message_spec.rb | 70 + .../spec/psrp/recieve_response_reader_spec.rb | 172 + .../winrm-2.2.3/tests/spec/psrp/uuid_spec.rb | 28 + .../tests/spec/response_handler_spec.rb | 61 + .../tests/spec/shells/base_spec.rb | 225 + .../winrm-2.2.3/tests/spec/shells/cmd_spec.rb | 75 + .../tests/spec/shells/powershell_spec.rb | 175 + .../winrm-2.2.3/tests/spec/spec_helper.rb | 47 + .../spec/stubs/clixml/error_record.xml.erb | 84 + .../spec/stubs/clixml/pipeline_state.xml.erb | 88 + .../get_command_output_response.xml.erb | 13 + ...t_command_output_response_not_done.xml.erb | 10 + .../get_powershell_keepalive_response.xml.erb | 10 + .../get_powershell_output_response.xml.erb | 12 + ...owershell_output_response_not_done.xml.erb | 9 + .../spec/stubs/responses/open_shell_v1.xml | 19 + .../spec/stubs/responses/open_shell_v2.xml | 20 + .../spec/stubs/responses/soap_fault_v1.xml | 36 + .../spec/stubs/responses/soap_fault_v2.xml | 42 + .../spec/stubs/responses/wmi_error_v2.xml | 41 + .../tests/spec/wsmv/cleanup_command_spec.rb | 22 + .../tests/spec/wsmv/close_shell_spec.rb | 17 + .../spec/wsmv/command_output_decoder_spec.rb | 37 + .../tests/spec/wsmv/command_output_spec.rb | 45 + .../tests/spec/wsmv/command_spec.rb | 19 + .../tests/spec/wsmv/configuration_spec.rb | 17 + .../tests/spec/wsmv/create_pipeline_spec.rb | 31 + .../tests/spec/wsmv/create_shell_spec.rb | 38 + .../spec/wsmv/init_runspace_pool_spec.rb | 36 + .../tests/spec/wsmv/keep_alive_spec.rb | 21 + .../spec/wsmv/receive_response_reader_spec.rb | 123 + .../tests/spec/wsmv/send_data_spec.rb | 30 + .../tests/spec/wsmv/wql_query_spec.rb | 13 + .../tests/spec/wsmv/write_stdin_spec.rb | 22 + .../ruby/2.4.0/gems/winrm-2.2.3/winrm.gemspec | 47 + .../ruby/2.4.0/gems/winrm-fs-1.0.1/.gitignore | 11 + .../ruby/2.4.0/gems/winrm-fs-1.0.1/.rspec | 3 + .../2.4.0/gems/winrm-fs-1.0.1/.rubocop.yml | 9 + .../2.4.0/gems/winrm-fs-1.0.1/.travis.yml | 9 + .../ruby/2.4.0/gems/winrm-fs-1.0.1/Gemfile | 5 + .../ruby/2.4.0/gems/winrm-fs-1.0.1/LICENSE | 202 + .../ruby/2.4.0/gems/winrm-fs-1.0.1/README.md | 79 + .../ruby/2.4.0/gems/winrm-fs-1.0.1/Rakefile | 28 + .../ruby/2.4.0/gems/winrm-fs-1.0.1/VERSION | 1 + .../2.4.0/gems/winrm-fs-1.0.1/Vagrantfile | 9 + .../2.4.0/gems/winrm-fs-1.0.1/appveyor.yml | 39 + .../2.4.0/gems/winrm-fs-1.0.1/bin/rwinrmcp | 86 + .../2.4.0/gems/winrm-fs-1.0.1/changelog.md | 51 + .../winrm-fs-1.0.1/spec/config-example.yml | 3 + .../spec/integration/file_manager_spec.rb | 224 + .../spec/integration/tmp_zip_spec.rb | 26 + .../gems/winrm-fs-1.0.1/spec/matchers.rb | 58 + .../gems/winrm-fs-1.0.1/spec/spec_helper.rb | 71 + .../winrm-fs-1.0.1/spec/unit/tmp_zip_spec.rb | 79 + .../gems/winrm-fs-1.0.1/winrm-fs.gemspec | 37 + .../specifications/addressable-2.5.1.gemspec | 39 + .../specifications/blankslate-2.1.2.4.gemspec | 33 + .../specifications/builder-3.2.3.gemspec | 21 + .../specifications/coderay-1.1.1.gemspec | 26 + .../2.4.0/specifications/diff-lcs-1.3.gemspec | 61 + .../specifications/docker-api-1.33.6.gemspec | 59 + .../domain_name-0.5.20170404.gemspec | 46 + .../2.4.0/specifications/erubis-2.7.0.gemspec | 22 + .../2.4.0/specifications/excon-0.58.0.gemspec | 69 + .../specifications/faraday-0.12.1.gemspec | 32 + .../2.4.0/specifications/ffi-1.9.18.gemspec | 49 + .../2.4.0/specifications/gssapi-1.2.0.gemspec | 36 + .../2.4.0/specifications/gyoku-1.3.1.gemspec | 40 + .../2.4.0/specifications/hashie-3.5.6.gemspec | 38 + .../specifications/htmlentities-4.3.4.gemspec | 34 + .../2.4.0/specifications/http-2.2.2.gemspec | 45 + .../specifications/http-cookie-1.0.3.gemspec | 52 + .../http-form_data-1.0.3.gemspec | 33 + .../http_parser.rb-0.6.0.gemspec | 50 + .../specifications/httpclient-2.8.3.gemspec | 21 + .../specifications/inspec-1.33.1.gemspec | 89 + .../little-plugger-1.1.4.gemspec | 35 + .../specifications/logging-2.2.2.gemspec | 47 + .../method_source-0.8.2.gemspec | 34 + .../specifications/mixlib-log-1.7.1.gemspec | 45 + .../mixlib-shellout-2.3.2.gemspec | 37 + .../specifications/multi_json-1.12.1.gemspec | 33 + .../multipart-post-2.0.0.gemspec | 22 + .../specifications/net-scp-1.2.1.gemspec | 42 + .../specifications/net-ssh-4.1.0.gemspec | 55 + .../2.4.0/specifications/nori-2.6.0.gemspec | 40 + .../specifications/parallel-1.12.0.gemspec | 20 + .../specifications/parslet-1.5.0.gemspec | 57 + .../2.4.0/specifications/pry-0.10.4.gemspec | 43 + .../public_suffix-2.0.5.gemspec | 41 + .../specifications/rainbow-2.2.2.gemspec | 39 + .../2.4.0/specifications/rake-12.0.0.gemspec | 43 + .../2.4.0/specifications/rspec-3.6.0.gemspec | 42 + .../specifications/rspec-core-3.6.0.gemspec | 62 + .../rspec-expectations-3.6.0.gemspec | 50 + .../specifications/rspec-its-1.2.0.gemspec | 47 + .../specifications/rspec-mocks-3.6.0.gemspec | 50 + .../rspec-support-3.6.0.gemspec | 41 + .../specifications/rubyntlm-0.6.2.gemspec | 45 + .../specifications/rubyzip-1.2.1.gemspec | 41 + .../specifications/semverse-2.0.0.gemspec | 36 + .../2.4.0/specifications/slop-3.6.0.gemspec | 36 + .../specifications/sslshake-1.2.0.gemspec | 20 + .../2.4.0/specifications/thor-0.19.4.gemspec | 35 + .../2.4.0/specifications/toml-0.1.2.gemspec | 38 + .../2.4.0/specifications/train-0.26.0.gemspec | 53 + .../2.4.0/specifications/unf-0.1.4.gemspec | 46 + .../specifications/unf_ext-0.0.7.4.gemspec | 51 + .../2.4.0/specifications/winrm-2.2.3.gemspec | 73 + .../specifications/winrm-fs-1.0.1.gemspec | 57 + validation/inspec/Makefile | 3 +- 1930 files changed, 552262 insertions(+), 18 deletions(-) create mode 100644 validation/inspec/FedRAMP/Moderate/.dockerignore create mode 100644 validation/inspec/FedRAMP/Moderate/Dockerfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/.bundle/config create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/Gemfile.lock create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/inspec.lock create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/coderay create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/erubis create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/htmldiff create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/httpclient create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/inspec create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/ldiff create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/pry create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/rake create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/rspec create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/rwinrm create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/rwinrmcp create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/thor create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/extensions/x86_64-darwin-16/2.4.0/ffi-1.9.18/ffi_c.bundle create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/extensions/x86_64-darwin-16/2.4.0/ffi-1.9.18/gem.build_complete create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/extensions/x86_64-darwin-16/2.4.0/http_parser.rb-0.6.0/gem.build_complete create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/extensions/x86_64-darwin-16/2.4.0/http_parser.rb-0.6.0/ruby_http_parser.bundle create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/extensions/x86_64-darwin-16/2.4.0/rainbow-2.2.2/gem.build_complete create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/extensions/x86_64-darwin-16/2.4.0/unf_ext-0.0.7.4/gem.build_complete create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/extensions/x86_64-darwin-16/2.4.0/unf_ext-0.0.7.4/unf_ext.bundle create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/CHANGELOG.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/LICENSE.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/data/unicode.data create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/addressable/idna_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/addressable/net_http_compat_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/addressable/rack_mount_compat_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/addressable/security_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/addressable/template_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/addressable/uri_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/clobber.rake create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/gem.rake create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/git.rake create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/metrics.rake create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/rspec.rake create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/yard.rake create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/README create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/VERSION create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/blankslate.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/spec/blankslate_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/CHANGES create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/MIT-LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/doc/jamis.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/doc/releases/builder-1.2.4.rdoc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/doc/releases/builder-2.0.0.rdoc create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/doc/releases/builder-2.1.1.rdoc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/rakelib/publish.rake create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/rakelib/tags.rake create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/rakelib/testing.rake create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/performance.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/preload.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_blankslate.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_eventbuilder.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_markupbuilder.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_method_caching.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_namecollision.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_xchar.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/README_INDEX.rdoc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/Rakefile create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/bin/coderay create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/test/functional/basic.rb create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/test/functional/examples.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/test/functional/for_redcloth.rb create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/test/functional/suite.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/.rspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/Code-of-Conduct.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/Contributing.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/History.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/License.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/Manifest.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/README.rdoc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/autotest/discover.rb create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/bin/htmldiff create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/bin/ldiff create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/docs/COPYING.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/docs/artistic.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/change_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/diff_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/fixtures/ds1.csv create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/fixtures/ds2.csv create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/hunk_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/issues_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/lcs_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/ldiff_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/patch_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/sdiff_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/traverse_balanced_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/traverse_sequences_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/.document create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/CHANGELOG.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/LICENSE.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/data/public_suffix_list.dat create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/domain_name.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/test/helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/test/test_domain_name-punycode.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/test/test_domain_name.rb create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/tool/gen_etld_data.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/CHANGES.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/MIT-LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/README.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/Makefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/bench.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/bench_context.yaml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/_footer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/_header.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/bench_erb.rhtml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/bench_erubis.rhtml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/bench_eruby.rhtml create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/bin/erubis create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/contrib/erubis create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/contrib/erubis-run.rb create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/contrib/inline-require create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/ActionView.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/ActionView/TemplateHandlers/ErubisHandler.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/ERB.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayBufferEnhancer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayBufferEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayEnhancer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Basic.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Basic/Converter.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Basic/Engine.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/BiPatternEnhancer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/BiPatternEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/CGenerator.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/CommandOptionError.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Context.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Converter.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/CppGenerator.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/DeleteIndentEnhancer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/DeleteIndentEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ec.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ecpp.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ejava.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ejavascript.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Engine.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Eperl.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ephp.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ErboutEnhancer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ErboutEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ErubisError.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Eruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapeEnhancer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEc.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEcpp.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEjava.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEjavascript.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEperl.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEphp.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEscheme.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Escheme.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Evaluator.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/FastEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Generator.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/HeaderFooterEnhancer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/HeaderFooterEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Helpers.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Helpers/RailsFormHelper.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Helpers/RailsHelper.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/InterpolationEnhancer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/InterpolationEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/JavaGenerator.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/JavascriptGenerator.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Main.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NoCodeEnhancer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NoCodeEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NoTextEnhancer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NoTextEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NotSupportedError.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/OptimizedEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/OptimizedGenerator.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/OptimizedXmlEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Converter.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ec.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ecpp.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ejava.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ejavascript.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Engine.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Eperl.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ephp.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Eruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Escheme.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/TinyEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PercentLineEnhancer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PercentLineEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PerlGenerator.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PhpGenerator.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrefixedLineEnhancer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrefixedLineEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PreprocessingEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PreprocessingHelper.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintEnabledEnhancer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintEnabledEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintOutEnhancer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintOutEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintOutSimplifiedEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/RubyEvaluator.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/RubyGenerator.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/SchemeGenerator.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/SimplifiedEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/SimplifyEnhancer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StdoutEnhancer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StdoutEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StdoutSimplifiedEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StringBufferEnhancer.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StringBufferEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StringIOEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/TinyEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/XmlEruby.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/XmlHelper.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Kernel.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/created.rid create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/README_txt.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/context_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/converter_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ec_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ecpp_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ejava_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ejavascript_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/enhanced_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/eperl_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ephp_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/eruby_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/escheme_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/optimized_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/enhancer_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/error_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/evaluator_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/generator_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/helper_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/helpers/rails_form_helper_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/helpers/rails_helper_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/local-setting_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/main_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/preprocessing_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/tiny_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/util_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis_rb.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/fr_class_index.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/fr_file_index.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/fr_method_index.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/index.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/rdoc-style.css create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc/docstyle.css create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc/users-guide.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/Makefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ecpp create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ejava create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ejs create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.eperl create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ephp create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.eruby create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.escheme create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/Makefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.ec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.ejava create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.ejs create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.eperl create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.ephp create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.eruby create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.escheme create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/setup.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/assert-text-equal.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/Example.ejava create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/array_example.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/arraybuffer_example.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/bipattern-example.rhtml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/bipattern_example.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/bufvar-example.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/bufvar-example.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/context.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/context.yaml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/def_method.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/def_method.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/escape_example.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.ec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.ecpp create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.ejs create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.eperl create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.ephp create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.eruby create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.escheme create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example1.eruby create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example1.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example1.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example10.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example10.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example10.xhtml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example10_x.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11.php create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11.rhtml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11_C.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11_N.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11_U.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11_php.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example1_x.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2.eruby create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2_trim.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2_x.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example3.eruby create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example3.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example31.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example32.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example3_e.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example4.eruby create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example4.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example4.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example4_x.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example5.eruby create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example5.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example5.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example6.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example6.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example7.eruby create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example71.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example72.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example8.eruby create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example8_ruby.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example8_yaml.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example9.eruby create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example9.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example9.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example91.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example92.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_c.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_java.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_js.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_perl.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_php.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_scheme.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_scheme_display.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby-example.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby-example.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby.rhtml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter-example.eruby create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter-example2.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter-example2.rhtml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter_example.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter_example2.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/interpolation_example.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/main_program1.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/main_program1.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/main_program2.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/main_program2.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/nocode-example.eruby create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/nocode-php.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/nocode_example.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/normal-eruby-test.eruby create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/normal_eruby_test.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/notext-example.eruby create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/notext-example.php create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/notext-php.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/notext_example.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/percentline-example.rhtml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/percentline_example.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/prefixedline-example.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/prefixedline-example.rhtml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/prefixedline_example.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/printenable_example.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/printenabled-example.eruby create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/printenabled-example.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/printstatement_example.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/simplify_example.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/stdout_exmple.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/stringbuffer_example.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/tail_260.result create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/tailnewline.rhtml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/template1.rhtml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/template2.rhtml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-engines.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-enhancers.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-erubis.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-index-cgi.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-main.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-users-guide.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/testutil.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/CONTRIBUTING.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/CONTRIBUTORS.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/Gemfile.lock create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/LICENSE.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/class_vs_lambda.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/concat_vs_insert.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/concat_vs_interpolate.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/cr_lf.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/downcase-eq-eq_vs_casecmp.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/excon.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/excon_vs.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/for_vs_array_each.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/for_vs_hash_each.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/has_key-vs-lookup.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/headers_case_sensitivity.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/headers_split_vs_match.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/implicit_block-vs-explicit_block.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/merging.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/single_vs_double_quotes.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/string_ranged_index.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/strip_newline.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/benchmarks/vs_stdlib.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/changelog.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/data/cacert.pem create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/excon.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/spec/excon/error_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/spec/excon/test/server_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/spec/excon_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/spec/helpers/file_path_helpers.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/spec/requests/basic_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/spec/requests/eof_requests_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/spec/requests/unix_socket_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/spec/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/spec/support/shared_contexts/test_server_context.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/spec/support/shared_examples/shared_example_for_clients.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/spec/support/shared_examples/shared_example_for_streaming_clients.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/spec/support/shared_examples/shared_example_for_test_servers.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/authorization_header_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/bad_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/basic_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/complete_responses.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/data/127.0.0.1.cert.crt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/data/127.0.0.1.cert.key create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/data/excon.cert.crt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/data/excon.cert.key create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/data/xs create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/error_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/header_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/middlewares/canned_response_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/middlewares/capture_cookies_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/middlewares/decompress_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/middlewares/escape_path_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/middlewares/idempotent_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/middlewares/instrumentation_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/middlewares/mock_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/middlewares/redirect_follower_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/pipeline_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/proxy_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/query_string_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/basic.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/basic.ru create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/basic_auth.ru create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/deflater.ru create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/proxy.ru create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/query_string.ru create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/redirecting.ru create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/redirecting_with_cookie.ru create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/request_headers.ru create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/request_methods.ru create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/response_header.ru create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/ssl.ru create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/ssl_mismatched_cn.ru create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/ssl_verify_peer.ru create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/streaming.ru create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/thread_safety.ru create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/timeout.ru create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/rackups/webrick_patch.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/request_headers_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/request_method_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/request_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/response_tests.rb create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/servers/bad.rb create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/servers/eof.rb create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/servers/error.rb create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/servers/good.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/test_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/thread_safety_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/timeout_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/excon-0.58.0/tests/utils_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/faraday-0.12.1/LICENSE.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/faraday-0.12.1/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/COPYING create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/.sitearchdir.time create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/AbstractMemory.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/AbstractMemory.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/ArrayType.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/ArrayType.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Buffer.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Call.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Call.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/ClosurePool.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/ClosurePool.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/DataConverter.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/DynamicLibrary.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/DynamicLibrary.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Function.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Function.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/FunctionInfo.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/LastError.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/LastError.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/LongDouble.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/LongDouble.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Makefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/MappedType.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/MappedType.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/MemoryPointer.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/MemoryPointer.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/MethodHandle.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/MethodHandle.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Platform.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Platform.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Pointer.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Pointer.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Struct.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Struct.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/StructByReference.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/StructByReference.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/StructByValue.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/StructByValue.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/StructLayout.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Thread.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Thread.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Type.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Type.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Types.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Types.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/Variadic.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/compat.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/extconf.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/extconf.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/ffi.c create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/ffi_c.bundle create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi.bsd.mk create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi.darwin.mk create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi.gnu.mk create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi.mk create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi.vc.mk create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi.vc64.mk create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/ChangeLog create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/ChangeLog.libffi create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/ChangeLog.libgcj create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/ChangeLog.v1 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/Makefile.am create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/Makefile.in create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/Makefile.vc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/Makefile.vc64 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/README create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/acinclude.m4 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/aclocal.m4 create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/build-ios.sh create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/compile create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/config.guess create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/config.sub create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/configure create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/configure.ac create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/configure.host create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/depcomp create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/doc/libffi.info create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/doc/libffi.texi create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/doc/stamp-vti create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/doc/version.texi create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/fficonfig.h.in create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/fficonfig.hw create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/include/Makefile.am create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/include/Makefile.in create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/include/ffi.h.in create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/include/ffi.h.vc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/include/ffi.h.vc64 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/include/ffi_common.h create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/install-sh create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/libffi.pc.in create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/libtool-version create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/ltmain.sh create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/m4/ax_check_compiler_flags.m4 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/m4/ax_configure_args.m4 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/m4/libtool.m4 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/m4/ltoptions.m4 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/m4/ltsugar.m4 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/m4/ltversion.m4 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/m4/lt~obsolete.m4 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/man/Makefile.am create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/man/Makefile.in create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/man/ffi.3 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/man/ffi_call.3 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/man/ffi_prep_cif.3 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/mdate-sh create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/missing create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/msvcc.sh create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/alpha/ffi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/alpha/ffitarget.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/alpha/osf.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/arm/ffi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/arm/ffitarget.h create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/arm/gentramp.sh create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/arm/sysv.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/arm/trampoline.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/avr32/ffi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/avr32/ffitarget.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/avr32/sysv.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/closures.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/cris/ffi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/cris/ffitarget.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/cris/sysv.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/debug.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/dlmalloc.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/frv/eabi.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/frv/ffi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/frv/ffitarget.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/ia64/ffi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/ia64/ffitarget.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/ia64/ia64_flags.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/ia64/unix.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/java_raw_api.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/m32r/ffi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/m32r/ffitarget.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/m32r/sysv.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/m68k/ffi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/m68k/ffitarget.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/m68k/sysv.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/mips/ffi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/mips/ffitarget.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/mips/n32.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/mips/o32.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/moxie/eabi.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/moxie/ffi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/pa/ffi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/pa/ffitarget.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/pa/hpux32.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/pa/linux.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/powerpc/aix.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/powerpc/aix_closure.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/powerpc/asm.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/powerpc/darwin.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/powerpc/darwin_closure.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/powerpc/ffi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/powerpc/ffitarget.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/powerpc/linux64.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/powerpc/linux64_closure.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/powerpc/ppc_closure.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/powerpc/sysv.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/prep_cif.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/raw_api.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/s390/ffi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/s390/ffitarget.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/s390/sysv.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/sh/ffi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/sh/ffitarget.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/sh/sysv.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/sh64/ffi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/sh64/ffitarget.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/sh64/sysv.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/sparc/ffi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/sparc/ffitarget.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/sparc/v8.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/sparc/v9.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/types.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/x86/darwin.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/x86/darwin64.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/x86/ffi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/x86/ffi64.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/x86/ffitarget.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/x86/freebsd.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/x86/sysv.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/x86/unix64.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/x86/win32.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/src/x86/win64.S create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/Makefile.am create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/Makefile.in create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/config/default.exp create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/call.exp create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/closure_loc_fn0.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/closure_stdcall.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_abi.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/float.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/float1.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/float2.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/float3.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/float4.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/many.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/negint.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.special/special.exp create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest.cc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/libffi/texinfo.tex create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/rbffi.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/rbffi_endian.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/win32/stdbool.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ext/ffi_c/win32/stdint.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/ffi.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/gen/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/libtest/Benchmark.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/libtest/BoolTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/libtest/BufferTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/libtest/ClosureTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/libtest/EnumTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/libtest/FunctionTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/libtest/GNUmakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/libtest/GlobalVariable.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/libtest/LastErrorTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/libtest/NumberTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/libtest/PointerTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/libtest/ReferenceTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/libtest/StringTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/libtest/StructTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/libtest/UnionTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/libtest/VariadicTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/LICENSE.SPECS create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/async_callback_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/bool_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/buffer_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/callback_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/custom_param_type.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/custom_type_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/dup_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/enum_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/errno_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/ffi_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/Benchmark.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/BoolTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/BufferTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/ClosureTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/EnumTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/FunctionTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/GNUmakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/GlobalVariable.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/LastErrorTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/NumberTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/PipeHelper.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/PipeHelperPosix.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/PipeHelperWindows.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/PointerTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/ReferenceTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/StringTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/StructTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/UnionTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/VariadicTest.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/fixtures/classes.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/function_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/io_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/library_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/long_double.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/managed_struct_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/memorypointer_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/number_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/platform_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/pointer_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/rbx/attach_function_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/rbx/memory_pointer_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/rbx/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/rbx/struct_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/string_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/strptr_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/struct_by_ref_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/struct_callback_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/struct_initialize_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/struct_packed_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/struct_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/typedef_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/union_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/ffi/variadic_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.18/spec/spec.opts create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gssapi-1.2.0/COPYING create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gssapi-1.2.0/Changelog.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gssapi-1.2.0/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gssapi-1.2.0/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gssapi-1.2.0/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gssapi-1.2.0/VERSION create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gssapi-1.2.0/examples/gss_client.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gssapi-1.2.0/examples/gss_iov_client.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gssapi-1.2.0/examples/gss_iov_helpers.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gssapi-1.2.0/examples/gss_iov_server.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gssapi-1.2.0/examples/gss_server.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gssapi-1.2.0/gssapi.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gssapi-1.2.0/preamble create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gssapi-1.2.0/test/spec/gssapi_simple_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gssapi-1.2.0/test/spec/test_buffer_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gyoku-1.3.1/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gyoku-1.3.1/.rspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gyoku-1.3.1/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gyoku-1.3.1/CHANGELOG.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gyoku-1.3.1/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gyoku-1.3.1/MIT-LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gyoku-1.3.1/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gyoku-1.3.1/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gyoku-1.3.1/gyoku.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gyoku-1.3.1/spec/gyoku/array_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gyoku-1.3.1/spec/gyoku/hash_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gyoku-1.3.1/spec/gyoku/xml_key_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gyoku-1.3.1/spec/gyoku/xml_value_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gyoku-1.3.1/spec/gyoku_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/gyoku-1.3.1/spec/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/htmlentities-4.3.4/COPYING.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/htmlentities-4.3.4/History.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/htmlentities-4.3.4/perf/benchmark.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/htmlentities-4.3.4/perf/performance.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/htmlentities-4.3.4/perf/profile.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/htmlentities-4.3.4/test/decoding_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/htmlentities-4.3.4/test/encoding_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/htmlentities-4.3.4/test/entities_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/htmlentities-4.3.4/test/expanded_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/htmlentities-4.3.4/test/html4_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/htmlentities-4.3.4/test/interoperability_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/htmlentities-4.3.4/test/roundtrip_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/htmlentities-4.3.4/test/string_encodings_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/htmlentities-4.3.4/test/test_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/htmlentities-4.3.4/test/xhtml1_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/.coveralls.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/.rspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/.rubocop.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/.ruby-version create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/.yardopts create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/CHANGES.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/CONTRIBUTING.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/Guardfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/LICENSE.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/http.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/logo.png create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/spec/regression_specs.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/spec/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/spec/support/black_hole.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/spec/support/capture_warning.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/spec/support/dummy_server.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/spec/support/dummy_server/servlet.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/spec/support/http_handling_shared.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/spec/support/proxy_server.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/spec/support/servers/config.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/spec/support/servers/runner.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-2.2.2/spec/support/ssl_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-cookie-1.0.3/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-cookie-1.0.3/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-cookie-1.0.3/CHANGELOG.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-cookie-1.0.3/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-cookie-1.0.3/LICENSE.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-cookie-1.0.3/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-cookie-1.0.3/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-cookie-1.0.3/http-cookie.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-cookie-1.0.3/test/helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-cookie-1.0.3/test/mechanize.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-cookie-1.0.3/test/simplecov_start.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-cookie-1.0.3/test/test_http_cookie.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-cookie-1.0.3/test/test_http_cookie_jar.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-form_data-1.0.3/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-form_data-1.0.3/.rspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-form_data-1.0.3/.rubocop.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-form_data-1.0.3/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-form_data-1.0.3/.yardopts create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-form_data-1.0.3/CHANGES.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-form_data-1.0.3/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-form_data-1.0.3/Guardfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-form_data-1.0.3/LICENSE.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-form_data-1.0.3/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-form_data-1.0.3/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-form_data-1.0.3/appveyor.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-form_data-1.0.3/http-form_data.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-form_data-1.0.3/spec/fixtures/expected-multipart-body.tpl create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-form_data-1.0.3/spec/fixtures/the-http-gem.info create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-form_data-1.0.3/spec/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http-form_data-1.0.3/spec/support/fixtures_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/.gitmodules create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/Gemfile.lock create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/LICENSE-MIT create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/Rakefile create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/bench/standalone.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/bench/thin.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/.sitearchdir.time create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/RubyHttpParserService.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/ext_help.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/extconf.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/org/ruby_http_parser/RubyHttpParser.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/ruby_http_parser.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/.gitkeep create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/AUTHORS create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/LICENSE-MIT create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/TODO create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/build.xml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.gyp create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/Http-parser.java.iml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/FieldData.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPCallback.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPDataCallback.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPErrorCallback.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPException.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPMethod.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPParser.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPParserUrl.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/ParserSettings.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/ParserType.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/Util.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPCallback.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPDataCallback.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPErrorCallback.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPParser.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/ParserSettings.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Message.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/ParseUrl.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Requests.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Responses.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Test.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestHeaderOverflowError.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestLoaderNG.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestNoOverflowLongBody.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/UnitTest.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Upgrade.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Url.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Util.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/WrongContentLength.java create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/test.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tests.dumped create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tests.utf8 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/byte_constants.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/const_char.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/lowcase.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/parse_tests.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/AUTHORS create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/CONTRIBUTIONS create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/LICENSE-MIT create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/http_parser.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/http_parser.gyp create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/http_parser.h create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/test.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/http_parser.rb.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/spec/parser_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/spec/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/spec/support/requests.json create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/spec/support/responses.json create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/tasks/compile.rake create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/tasks/fixtures.rake create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/tasks/spec.rake create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/http_parser.rb-0.6.0/tasks/submodules.rake create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/README.md create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/bin/httpclient create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/bin/jsonclient create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/async.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/auth.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/cookie.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/dav.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/howto.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/jsonclient.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/oauth_buzz.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/oauth_friendfeed.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/oauth_twitter.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/ssl/0cert.pem create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/ssl/0key.pem create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/ssl/1000cert.pem create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/ssl/1000key.pem create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/ssl/htdocs/index.html create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/ssl/ssl_client.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/ssl/webrick_httpsd.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/stream.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/thread.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/sample/wcat.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/ca-chain.pem create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/ca.cert create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/client-pass.key create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/client.cert create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/client.key create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/htdigest create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/htpasswd create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/jruby_ssl_socket/test_pemutils.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/runner.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/server.cert create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/server.key create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/sslsvr.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/subca.cert create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/test_auth.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/test_cookie.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/test_hexdump.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/test_http-access2.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/test_httpclient.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/test_include_client.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/test_jsonclient.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/test_ssl.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/httpclient-2.8.3/test/test_webagent-cookie.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/.rubocop.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/CHANGELOG.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/MAINTAINERS.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/MAINTAINERS.toml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/Rakefile create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/bin/inspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/dsl_inspec.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/dsl_resource.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/habitat.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/inspec_and_friends.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/matchers.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/migration.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/plugin_kitchen_inspec.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/profiles.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/apache_conf.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/apt.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/audit_policy.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/auditd_conf.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/auditd_rules.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/bash.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/bond.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/bridge.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/bsd_service.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/command.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/crontab.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/csv.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/dh_params.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/directory.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/docker.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/docker_container.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/docker_image.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/etc_group.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/etc_passwd.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/etc_shadow.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/file.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/gem.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/group.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/grub_conf.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/host.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/http.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/iis_app.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/iis_site.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/inetd_conf.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/ini.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/interface.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/iptables.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/json.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/kernel_module.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/kernel_parameter.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/key_rsa.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/launchd_service.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/limits_conf.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/login_def.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/mount.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/mssql_session.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/mysql_conf.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/mysql_session.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/npm.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/ntp_conf.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/oneget.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/oracledb_session.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/os.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/os_env.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/package.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/parse_config.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/parse_config_file.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/pip.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/port.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/postgres_conf.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/postgres_hba_conf.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/postgres_ident_conf.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/postgres_session.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/powershell.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/processes.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/rabbitmq_config.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/registry_key.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/runit_service.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/security_policy.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/service.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/ssh_config.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/sshd_config.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/ssl.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/sys_info.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/systemd_service.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/sysv_service.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/upstart_service.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/user.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/users.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/vbscript.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/virtualization.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/windows_feature.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/windows_task.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/wmi.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/x509_certificate.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/xinetd_conf.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/yaml.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/yum.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/zfs_dataset.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/resources/zfs_pool.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/ruby_usage.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/shared/matcher_be.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/shared/matcher_cmp.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/shared/matcher_eq.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/shared/matcher_include.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/shared/matcher_match.md.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/docs/shell.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/inheritance/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/inheritance/controls/example.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/inheritance/inspec.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-ansible/.kitchen.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-ansible/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-ansible/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-ansible/files/nginx.repo create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-ansible/tasks/main.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-ansible/test/integration/default/default.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-ansible/test/integration/default/web_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-chef/.kitchen.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-chef/Berksfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-chef/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-chef/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-chef/metadata.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-chef/recipes/default.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-chef/recipes/nginx.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-chef/test/integration/default/web_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-puppet/.kitchen.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-puppet/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-puppet/Puppetfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-puppet/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-puppet/manifests/site.pp create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-puppet/metadata.json create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/kitchen-puppet/test/integration/default/web_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/meta-profile/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/meta-profile/controls/example.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/meta-profile/inspec.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/profile-attribute/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/profile-attribute/controls/example.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/profile-attribute/inspec.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/profile/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/profile/controls/example.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/profile/controls/gordon.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/profile/controls/meta.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/profile/inspec.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/examples/profile/libraries/gordon_config.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/inspec-1.33.1/inspec.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/little-plugger-1.1.4/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/little-plugger-1.1.4/History.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/little-plugger-1.1.4/README.rdoc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/little-plugger-1.1.4/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/little-plugger-1.1.4/spec/little-plugger_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/little-plugger-1.1.4/spec/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/History.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/examples/appenders.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/examples/classes.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/examples/colorization.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/examples/custom_log_levels.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/examples/fork.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/examples/formatting.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/examples/hierarchies.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/examples/layouts.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/examples/lazy.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/examples/loggers.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/examples/mdc.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/examples/names.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/examples/rails4.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/examples/reusing_layouts.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/examples/rspec_integration.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/examples/simple.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/logging.gemspec create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/script/bootstrap create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/script/console create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/appenders/test_async_flushing.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/appenders/test_buffered_io.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/appenders/test_console.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/appenders/test_file.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/appenders/test_io.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/appenders/test_rolling_file.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/appenders/test_string_io.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/appenders/test_syslog.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/benchmark.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/layouts/test_basic.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/layouts/test_color_pattern.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/layouts/test_json.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/layouts/test_nested_exceptions.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/layouts/test_pattern.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/layouts/test_yaml.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/performance.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/setup.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/test_appender.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/test_color_scheme.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/test_filter.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/test_layout.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/test_log_event.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/test_logger.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/test_logging.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/test_mapped_diagnostic_context.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/test_nested_diagnostic_context.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/test_proxy.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/test_repository.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/test_root_logger.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/logging-2.2.2/test/test_utils.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/method_source-0.8.2/.gemtest create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/method_source-0.8.2/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/method_source-0.8.2/.yardopts create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/method_source-0.8.2/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/method_source-0.8.2/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/method_source-0.8.2/README.markdown create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/method_source-0.8.2/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/method_source-0.8.2/method_source.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/method_source-0.8.2/test/test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/method_source-0.8.2/test/test_code_helpers.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/method_source-0.8.2/test/test_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/mixlib-log-1.7.1/.gemtest create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/mixlib-log-1.7.1/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/mixlib-log-1.7.1/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/mixlib-log-1.7.1/NOTICE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/mixlib-log-1.7.1/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/mixlib-log-1.7.1/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/mixlib-log-1.7.1/mixlib-log.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/mixlib-log-1.7.1/spec/mixlib/log/formatter_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/mixlib-log-1.7.1/spec/mixlib/log_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/mixlib-log-1.7.1/spec/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/mixlib-shellout-2.3.2/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/mixlib-shellout-2.3.2/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/mixlib-shellout-2.3.2/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/mixlib-shellout-2.3.2/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/mixlib-shellout-2.3.2/mixlib-shellout-windows.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/mixlib-shellout-2.3.2/mixlib-shellout.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.1/CHANGELOG.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.1/CONTRIBUTING.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.1/LICENSE.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.1/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.1/multi_json.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/multipart-post-2.0.0/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/multipart-post-2.0.0/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/multipart-post-2.0.0/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/multipart-post-2.0.0/History.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/multipart-post-2.0.0/Manifest.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/multipart-post-2.0.0/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/multipart-post-2.0.0/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/multipart-post-2.0.0/multipart-post.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/multipart-post-2.0.0/test/multibyte.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/multipart-post-2.0.0/test/net/http/post/test_multipart.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/multipart-post-2.0.0/test/test_composite_io.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/multipart-post-2.0.0/test/test_parts.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-scp-1.2.1/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-scp-1.2.1/CHANGES.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-scp-1.2.1/LICENSE.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-scp-1.2.1/Manifest create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-scp-1.2.1/README.rdoc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-scp-1.2.1/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-scp-1.2.1/gem-public_cert.pem create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-scp-1.2.1/net-scp.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-scp-1.2.1/setup.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-scp-1.2.1/test/common.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-scp-1.2.1/test/test_all.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-scp-1.2.1/test/test_download.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-scp-1.2.1/test/test_scp.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-scp-1.2.1/test/test_upload.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/.rubocop.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/.rubocop_todo.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/CHANGES.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/Gemfile.norbnacl create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/Gemfile.norbnacl.lock create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/ISSUE_TEMPLATE.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/LICENSE.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/Manifest create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/README.rdoc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/THANKS.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/appveyor.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/net-ssh-public_cert.pem create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/net-ssh.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/support/arcfour_check.rb create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/support/ssh_tunnel_bug.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/nori-2.6.0/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/nori-2.6.0/.rspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/nori-2.6.0/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/nori-2.6.0/CHANGELOG.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/nori-2.6.0/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/nori-2.6.0/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/nori-2.6.0/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/nori-2.6.0/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/nori-2.6.0/benchmark/benchmark.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/nori-2.6.0/benchmark/soap_response.xml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/nori-2.6.0/nori.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/nori-2.6.0/spec/nori/api_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/nori-2.6.0/spec/nori/core_ext/hash_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/nori-2.6.0/spec/nori/core_ext/object_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/nori-2.6.0/spec/nori/core_ext/string_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/nori-2.6.0/spec/nori/nori_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/nori-2.6.0/spec/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parallel-1.12.0/MIT-LICENSE.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/HISTORY.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/README create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/boolean_algebra.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/calc.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/capture.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/comments.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/deepest_errors.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/documentation.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/email_parser.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/empty.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/erb.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/ignore.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/ip_address.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/json.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/local.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/mathn.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/minilisp.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/modularity.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/nested_errors.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/output/documentation.err create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/output/empty.err create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/parens.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/readme.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/scopes.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/seasons.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/sentence.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/simple.lit create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/simple_xml.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/string_parser.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/parslet-1.5.0/example/test.lit create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/pry-0.10.4/CHANGELOG.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/pry-0.10.4/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/pry-0.10.4/README.md create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/pry-0.10.4/bin/pry create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/.rubocop.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/Changelog.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/Guardfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/README.markdown create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/ext/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/ext/mkrf_conf.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/rainbow.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/spec/integration/instance_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/spec/integration/rainbow_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/spec/integration/string_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/spec/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/spec/support/presenter_shared_examples.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/spec/unit/color_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/spec/unit/namespace_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/spec/unit/null_presenter_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/spec/unit/presenter_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/spec/unit/string_utils_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rainbow-2.2.2/spec/unit/wrapper_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/.rubocop.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/CONTRIBUTING.rdoc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/History.rdoc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/MIT-LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/README.rdoc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/appveyor.yml create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/bin/console create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/bin/setup create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/command_line_usage.rdoc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/example/Rakefile1 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/example/Rakefile2 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/example/a.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/example/b.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/example/main.c create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/glossary.rdoc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/jamis.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/proto_rake.rdoc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/rake.1 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/rakefile.rdoc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/rational.rdoc create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/exe/rake create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/rake.gemspec create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-3.6.0/LICENSE.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-3.6.0/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-core-3.6.0/.document create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-core-3.6.0/.yardopts create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-core-3.6.0/Changelog.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-core-3.6.0/LICENSE.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-core-3.6.0/README.md create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-core-3.6.0/exe/rspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-expectations-3.6.0/.document create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-expectations-3.6.0/.yardopts create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-expectations-3.6.0/Changelog.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-expectations-3.6.0/LICENSE.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-expectations-3.6.0/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/.rspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/Changelog.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/LICENSE.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/cucumber.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/features/its.feature create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/features/step_definitions/additional_cli_steps.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/features/support/env.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/rspec-its.gemspec create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/script/test_all create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/spec/rspec/its_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/spec/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-mocks-3.6.0/.document create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-mocks-3.6.0/.yardopts create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-mocks-3.6.0/Changelog.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-mocks-3.6.0/LICENSE.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-mocks-3.6.0/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-support-3.6.0/Changelog.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-support-3.6.0/LICENSE.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rspec-support-3.6.0/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/.rspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/CHANGELOG.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/examples/http.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/examples/imap.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/examples/smtp.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/rubyntlm.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/spec/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/spec/support/certificates/sha_256_hash.pem create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/spec/support/shared/examples/net/ntlm/field_shared.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/spec/support/shared/examples/net/ntlm/fieldset_shared.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/spec/support/shared/examples/net/ntlm/int_shared.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyntlm-0.6.2/spec/support/shared/examples/net/ntlm/message_shared.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/TODO create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/samples/example.rb create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/samples/example_filesystem.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/samples/example_recursive.rb create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/samples/gtk_ruby_zip.rb create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/samples/qtzip.rb create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/samples/write_simple.rb create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/samples/zipfind.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/basic_zip_file_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/case_sensitivity_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/central_directory_entry_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/central_directory_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/crypto/null_encryption_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/crypto/traditional_encryption_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/WarnInvalidDate.zip create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/file1.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/file1.txt.deflatedData create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/file2.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/globTest.zip create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/globTest/foo.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/globTest/foo/bar/baz/foo.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/globTest/food.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/mimetype create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/notzippedruby.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/ntfs.zip create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/oddExtraField.zip create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/rubycode.zip create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/rubycode2.zip create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/test.xls create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/testDirectory.bin create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/zip64-sample.zip create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/zipWithDirs.zip create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/data/zipWithEncryption.zip create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/deflater_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/encryption_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/entry_set_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/entry_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/errors_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/extra_field_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/file_extract_directory_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/file_extract_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/file_permissions_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/file_split_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/file_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/filesystem/dir_iterator_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/filesystem/directory_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/filesystem/file_mutating_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/filesystem/file_nonmutating_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/filesystem/file_stat_test.rb create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/gentestfiles.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/inflater_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/input_stream_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/ioextras/abstract_input_stream_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/ioextras/abstract_output_stream_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/ioextras/fake_io_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/local_entry_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/output_stream_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/pass_thru_compressor_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/pass_thru_decompressor_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/samples/example_recursive_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/settings_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/test_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/unicode_file_names_and_comments_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/zip64_full_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/rubyzip-1.2.1/test/zip64_support_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/semverse-2.0.0/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/semverse-2.0.0/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/semverse-2.0.0/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/semverse-2.0.0/Guardfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/semverse-2.0.0/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/semverse-2.0.0/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/semverse-2.0.0/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/semverse-2.0.0/semverse.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/semverse-2.0.0/spec/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/semverse-2.0.0/spec/unit/semverse/constraint_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/semverse-2.0.0/spec/unit/semverse/version_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/semverse-2.0.0/spec/unit/semverse_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/slop-3.6.0/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/slop-3.6.0/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/slop-3.6.0/CHANGES.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/slop-3.6.0/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/slop-3.6.0/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/slop-3.6.0/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/slop-3.6.0/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/slop-3.6.0/slop.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/slop-3.6.0/test/commands_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/slop-3.6.0/test/helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/slop-3.6.0/test/option_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/slop-3.6.0/test/slop_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/sslshake-1.2.0/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/sslshake-1.2.0/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/sslshake-1.2.0/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/sslshake-1.2.0/sslshake.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/thor-0.19.4/.document create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/thor-0.19.4/CHANGELOG.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/thor-0.19.4/CONTRIBUTING.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/thor-0.19.4/LICENSE.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/thor-0.19.4/README.md create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/thor-0.19.4/bin/thor create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/thor-0.19.4/thor.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/toml-0.1.2/CHANGELOG.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/toml-0.1.2/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/toml-0.1.2/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/.rubocop.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/CHANGELOG.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/.kitchen.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/Berksfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/bootstrap.sh create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/chefignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/cookbooks/test/metadata.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/cookbooks/test/recipes/default.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/cookbooks/test/recipes/prep_files.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/docker_run.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/docker_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/docker_test_container.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/sudo/customcommand.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/sudo/nopasswd.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/sudo/passwd.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/sudo/reqtty.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/sudo/run_as.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/test-travis-centos.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/test-travis-debian.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/test-travis-fedora.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/test-travis-oel.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/test-travis-ubuntu.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/test_local.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/test_ssh.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/tests/path_block_device_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/tests/path_character_device_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/tests/path_file_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/tests/path_folder_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/tests/path_missing_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/tests/path_pipe_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/tests/path_symlink_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/integration/tests/run_command_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/extras/command_wrapper_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/extras/file_common_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/extras/linux_file_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/extras/os_common_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/extras/os_detect_linux_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/extras/os_detect_windows_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/extras/stat_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/extras/windows_file_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/plugins/connection_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/plugins/transport_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/plugins_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/train_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/transports/local_file_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/transports/local_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/transports/mock_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/transports/ssh_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/unit/version_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/windows/local_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/test/windows/winrm_test.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/train-0.26.0/train.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf-0.1.4/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf-0.1.4/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf-0.1.4/CHANGELOG.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf-0.1.4/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf-0.1.4/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf-0.1.4/README.md create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf-0.1.4/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf-0.1.4/test/helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf-0.1.4/test/normalization-test.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf-0.1.4/test/test_unf.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf-0.1.4/unf.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/.document create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/CHANGELOG.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/LICENSE.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/ext/unf_ext/.sitearchdir.time create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/ext/unf_ext/extconf.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/ext/unf_ext/unf.cc create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/ext/unf_ext/unf/normalizer.hh create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/ext/unf_ext/unf/table.hh create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/ext/unf_ext/unf/trie/char_stream.hh create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/ext/unf_ext/unf/trie/node.hh create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/ext/unf_ext/unf/trie/searcher.hh create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/ext/unf_ext/unf/util.hh create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/ext/unf_ext/unf_ext.bundle create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/test/helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/test/normalization-test.txt create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/test/test_unf_ext.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/unf_ext-0.0.7.4/unf_ext.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/.rubocop.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/Vagrantfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/WinrmAppveyor.psm1 create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/appveyor.yml create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/bin/rwinrm create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/changelog.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/preamble create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/integration/auth_timeout_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/integration/cmd_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/integration/config-example.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/integration/issue_59_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/integration/powershell_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/integration/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/integration/transport_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/integration/wql_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/matchers.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/configuration_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/connection_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/exception_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/http/transport_factory_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/http/transport_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/output_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/psrp/fragment_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/psrp/message_data/base_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/psrp/message_data/error_record_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/psrp/message_data/pipeline_host_call_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/psrp/message_data/pipeline_output_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/psrp/message_data/pipeline_state_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/psrp/message_data/runspace_pool_host_call_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/psrp/message_data/runspacepool_state_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/psrp/message_data/session_capability_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/psrp/message_data_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/psrp/message_defragmenter_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/psrp/message_fragmenter_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/psrp/powershell_output_decoder_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/psrp/psrp_message_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/psrp/recieve_response_reader_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/psrp/uuid_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/response_handler_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/shells/base_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/shells/cmd_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/shells/powershell_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/stubs/clixml/error_record.xml.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/stubs/clixml/pipeline_state.xml.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/stubs/responses/get_command_output_response.xml.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/stubs/responses/get_command_output_response_not_done.xml.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/stubs/responses/get_powershell_keepalive_response.xml.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/stubs/responses/get_powershell_output_response.xml.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/stubs/responses/get_powershell_output_response_not_done.xml.erb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/stubs/responses/open_shell_v1.xml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/stubs/responses/open_shell_v2.xml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/stubs/responses/soap_fault_v1.xml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/stubs/responses/soap_fault_v2.xml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/stubs/responses/wmi_error_v2.xml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/wsmv/cleanup_command_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/wsmv/close_shell_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/wsmv/command_output_decoder_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/wsmv/command_output_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/wsmv/command_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/wsmv/configuration_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/wsmv/create_pipeline_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/wsmv/create_shell_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/wsmv/init_runspace_pool_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/wsmv/keep_alive_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/wsmv/receive_response_reader_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/wsmv/send_data_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/wsmv/wql_query_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/tests/spec/wsmv/write_stdin_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-2.2.3/winrm.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/.gitignore create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/.rspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/.rubocop.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/.travis.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/Gemfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/LICENSE create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/README.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/Rakefile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/VERSION create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/Vagrantfile create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/appveyor.yml create mode 100755 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/bin/rwinrmcp create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/changelog.md create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/spec/config-example.yml create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/spec/integration/file_manager_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/spec/integration/tmp_zip_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/spec/matchers.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/spec/spec_helper.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/spec/unit/tmp_zip_spec.rb create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.0.1/winrm-fs.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/addressable-2.5.1.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/blankslate-2.1.2.4.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/builder-3.2.3.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/coderay-1.1.1.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/diff-lcs-1.3.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/docker-api-1.33.6.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/domain_name-0.5.20170404.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/erubis-2.7.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/excon-0.58.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/faraday-0.12.1.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/ffi-1.9.18.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/gssapi-1.2.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/gyoku-1.3.1.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/hashie-3.5.6.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/htmlentities-4.3.4.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/http-2.2.2.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/http-cookie-1.0.3.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/http-form_data-1.0.3.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/http_parser.rb-0.6.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/httpclient-2.8.3.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/inspec-1.33.1.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/little-plugger-1.1.4.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/logging-2.2.2.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/method_source-0.8.2.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/mixlib-log-1.7.1.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/mixlib-shellout-2.3.2.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/multi_json-1.12.1.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/multipart-post-2.0.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/net-scp-1.2.1.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/net-ssh-4.1.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/nori-2.6.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/parallel-1.12.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/parslet-1.5.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/pry-0.10.4.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/public_suffix-2.0.5.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/rainbow-2.2.2.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/rake-12.0.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/rspec-3.6.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/rspec-core-3.6.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/rspec-expectations-3.6.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/rspec-its-1.2.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/rspec-mocks-3.6.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/rspec-support-3.6.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/rubyntlm-0.6.2.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/rubyzip-1.2.1.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/semverse-2.0.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/slop-3.6.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/sslshake-1.2.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/thor-0.19.4.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/toml-0.1.2.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/train-0.26.0.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/unf-0.1.4.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/unf_ext-0.0.7.4.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/winrm-2.2.3.gemspec create mode 100644 validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/specifications/winrm-fs-1.0.1.gemspec diff --git a/.gitignore b/.gitignore index 3c1e1bf..594eff1 100644 --- a/.gitignore +++ b/.gitignore @@ -369,3 +369,6 @@ fabric.properties # See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360 .idea/ + + +profile-attribute.yml \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/.dockerignore b/validation/inspec/FedRAMP/Moderate/.dockerignore new file mode 100644 index 0000000..7598daf --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/.dockerignore @@ -0,0 +1,4 @@ +libraries/.bundle/ +libraries/.idea/ +libraries/vendor/ +profile-attribute.yml diff --git a/validation/inspec/FedRAMP/Moderate/Dockerfile b/validation/inspec/FedRAMP/Moderate/Dockerfile new file mode 100644 index 0000000..7951336 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/Dockerfile @@ -0,0 +1,7 @@ +FROM chef/inspec:latest +RUN apk add --no-cache ruby-dev build-base +COPY libraries/Gemfile libraries/ +COPY libraries/Gemfile.lock libraries/ +RUN cd libraries && \ + bundle install +COPY . . diff --git a/validation/inspec/FedRAMP/Moderate/controls/ucp_spec.rb b/validation/inspec/FedRAMP/Moderate/controls/ucp_spec.rb index bc10de3..8a97e6f 100644 --- a/validation/inspec/FedRAMP/Moderate/controls/ucp_spec.rb +++ b/validation/inspec/FedRAMP/Moderate/controls/ucp_spec.rb @@ -3,17 +3,21 @@ title 'Universal Control Plane' +val_ucp_uri = attribute('ucpuri', description: 'UCP URI') +val_username = attribute('username', description: 'UCP username') +val_password = attribute('password', description: 'UCP password') + # you can also use plain tests -describe file('/tmp') do - it { should be_directory } +describe ucp(val_ucp_uri, val_username, val_password) do + its('version') { should eq('2.2.0-beta1') } end # you add controls here -control 'tmp-1.0' do # A unique ID for this control - impact 0.7 # The criticality, if this control fails. - title 'Create /tmp directory' # A human-readable title - desc 'An optional description...' - describe file('/tmp') do # The actual test - it { should be_directory } - end -end +# control 'tmp-1.0' do # A unique ID for this control +# impact 0.7 # The criticality, if this control fails. +# title 'Create /tmp directory' # A human-readable title +# desc 'An optional description...' +# describe file('/tmp') do # The actual test +# it { should be_directory } +# end +# end diff --git a/validation/inspec/FedRAMP/Moderate/inspec.yml b/validation/inspec/FedRAMP/Moderate/inspec.yml index 271a892..83d503f 100644 --- a/validation/inspec/FedRAMP/Moderate/inspec.yml +++ b/validation/inspec/FedRAMP/Moderate/inspec.yml @@ -1,5 +1,5 @@ name: Docker EE FedRAMP Moderate -title: D +title: Docker EE FedRAMP Moderate maintainer: Andrew Weiss copyright: Docker, Inc copyright_email: compliance@docker.com diff --git a/validation/inspec/FedRAMP/Moderate/libraries/.bundle/config b/validation/inspec/FedRAMP/Moderate/libraries/.bundle/config new file mode 100644 index 0000000..6b676f6 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/.bundle/config @@ -0,0 +1,4 @@ +--- +BUNDLE_PATH: "vendor/bundle" +BUNDLE_DISABLE_SHARED_GEMS: "true" +BUNDLE_FROZEN: "1" diff --git a/validation/inspec/FedRAMP/Moderate/libraries/Gemfile b/validation/inspec/FedRAMP/Moderate/libraries/Gemfile new file mode 100644 index 0000000..3f022e9 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/Gemfile @@ -0,0 +1,3 @@ +source 'http://rubygems.org' +gem 'http' +gem 'inspec' diff --git a/validation/inspec/FedRAMP/Moderate/libraries/Gemfile.lock b/validation/inspec/FedRAMP/Moderate/libraries/Gemfile.lock new file mode 100644 index 0000000..94a74d8 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/Gemfile.lock @@ -0,0 +1,139 @@ +GEM + remote: http://rubygems.org/ + specs: + addressable (2.5.1) + public_suffix (~> 2.0, >= 2.0.2) + blankslate (2.1.2.4) + builder (3.2.3) + coderay (1.1.1) + diff-lcs (1.3) + docker-api (1.33.6) + excon (>= 0.38.0) + json + domain_name (0.5.20170404) + unf (>= 0.0.5, < 1.0.0) + erubis (2.7.0) + excon (0.58.0) + faraday (0.12.1) + multipart-post (>= 1.2, < 3) + ffi (1.9.18) + gssapi (1.2.0) + ffi (>= 1.0.1) + gyoku (1.3.1) + builder (>= 2.1.2) + hashie (3.5.6) + htmlentities (4.3.4) + http (2.2.2) + addressable (~> 2.3) + http-cookie (~> 1.0) + http-form_data (~> 1.0.1) + http_parser.rb (~> 0.6.0) + http-cookie (1.0.3) + domain_name (~> 0.5) + http-form_data (1.0.3) + http_parser.rb (0.6.0) + httpclient (2.8.3) + inspec (1.33.1) + addressable (~> 2.4) + faraday (>= 0.9.0) + hashie (~> 3.4) + htmlentities + json (>= 1.8, < 3.0) + method_source (~> 0.8) + mixlib-log + parallel (~> 1.9) + parslet (~> 1.5) + pry (~> 0) + rainbow (~> 2) + rspec (~> 3) + rspec-its (~> 1.2) + rubyzip (~> 1.1) + semverse + sslshake (~> 1.2) + thor (~> 0.19) + toml (~> 0.1) + train (~> 0.26) + json (2.0.2) + little-plugger (1.1.4) + logging (2.2.2) + little-plugger (~> 1.1) + multi_json (~> 1.10) + method_source (0.8.2) + mixlib-log (1.7.1) + mixlib-shellout (2.3.2) + multi_json (1.12.1) + multipart-post (2.0.0) + net-scp (1.2.1) + net-ssh (>= 2.6.5) + net-ssh (4.1.0) + nori (2.6.0) + parallel (1.12.0) + parslet (1.5.0) + blankslate (~> 2.0) + pry (0.10.4) + coderay (~> 1.1.0) + method_source (~> 0.8.1) + slop (~> 3.4) + public_suffix (2.0.5) + rainbow (2.2.2) + rake + rake (12.0.0) + rspec (3.6.0) + rspec-core (~> 3.6.0) + rspec-expectations (~> 3.6.0) + rspec-mocks (~> 3.6.0) + rspec-core (3.6.0) + rspec-support (~> 3.6.0) + rspec-expectations (3.6.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.6.0) + rspec-its (1.2.0) + rspec-core (>= 3.0.0) + rspec-expectations (>= 3.0.0) + rspec-mocks (3.6.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.6.0) + rspec-support (3.6.0) + rubyntlm (0.6.2) + rubyzip (1.2.1) + semverse (2.0.0) + slop (3.6.0) + sslshake (1.2.0) + thor (0.19.4) + toml (0.1.2) + parslet (~> 1.5.0) + train (0.26.0) + docker-api (~> 1.26) + json (>= 1.8, < 3.0) + mixlib-shellout (~> 2.0) + net-scp (~> 1.2) + net-ssh (>= 2.9, < 5.0) + winrm (~> 2.0) + winrm-fs (~> 1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.7.4) + winrm (2.2.3) + builder (>= 2.1.2) + erubis (~> 2.7) + gssapi (~> 1.2) + gyoku (~> 1.0) + httpclient (~> 2.2, >= 2.2.0.2) + logging (>= 1.6.1, < 3.0) + nori (~> 2.0) + rubyntlm (~> 0.6.0, >= 0.6.1) + winrm-fs (1.0.1) + erubis (~> 2.7) + logging (>= 1.6.1, < 3.0) + rubyzip (~> 1.1) + winrm (~> 2.0) + +PLATFORMS + ruby + +DEPENDENCIES + http + inspec + +BUNDLED WITH + 1.15.1 diff --git a/validation/inspec/FedRAMP/Moderate/libraries/inspec.lock b/validation/inspec/FedRAMP/Moderate/libraries/inspec.lock new file mode 100644 index 0000000..e687b9b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/inspec.lock @@ -0,0 +1,3 @@ +--- +lockfile_version: 1 +depends: [] diff --git a/validation/inspec/FedRAMP/Moderate/libraries/ucp.rb b/validation/inspec/FedRAMP/Moderate/libraries/ucp.rb index 4f09421..05dc272 100644 --- a/validation/inspec/FedRAMP/Moderate/libraries/ucp.rb +++ b/validation/inspec/FedRAMP/Moderate/libraries/ucp.rb @@ -1,15 +1,47 @@ -class UCP < Inspec.Resource(1) +require 'http' +require 'json' +require 'uri' +require 'inspec' + +class UCP < Inspec.resource(1) name 'ucp' - desc " + desc ' Universal Control Plane (UCP) API resource - " + ' example " - describe ucp('https://ucp_url') do - its('version') { should eq ('1.0') } + describe ucp('https://ucp_uri', 'username', 'password') do + its('version') { should eq ('2.2.0') } end " - + def initialize(ucp_uri, username, password) + @ucp_uri = ucp_uri.to_s.chomp('/') + @username = username.to_s + @password = password.to_s + if ucp_uri !~ URI.regexp + return skip_resource "Invalid UCP URL #{@ucp_uri}" + end + @ctx = OpenSSL::SSL::SSLContext.new + @ctx.verify_mode = OpenSSL::SSL::VERIFY_NONE + begin + @auth_response = HTTP.post("#{@ucp_uri}/auth/login", :json => { :username => "#{@username}", :password => "#{@password}" }, :ssl_context => @ctx) + rescue StandardError + return skip_resource "Error getting auth token from UCP URI #{@ucp_uri}: #{$!}" + end + @auth_response_json = JSON.parse(@auth_response) + @auth_token = @auth_response_json['auth_token'] + end + + def version + api_response = query_api('version') + return api_response['Version'].to_s.partition('ucp/').last + end + + private + + def query_api(endpoint) + return JSON.parse(HTTP.auth("Bearer #{@auth_token}").get("#{@ucp_uri}/#{endpoint}", :ssl_context => @ctx)) + end end \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/coderay b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/coderay new file mode 100755 index 0000000..4a6ce12 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/coderay @@ -0,0 +1,22 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'coderay' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +load Gem.activate_bin_path('coderay', 'coderay', version) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/erubis b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/erubis new file mode 100755 index 0000000..e65877c --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/erubis @@ -0,0 +1,22 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'erubis' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +load Gem.activate_bin_path('erubis', 'erubis', version) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/htmldiff b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/htmldiff new file mode 100755 index 0000000..8d415bb --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/htmldiff @@ -0,0 +1,24 @@ +#!/bin/sh +'exec' "ruby" '-x' "$0" "$@" +#!/usr/local/opt/ruby/bin/ruby +# +# This file was generated by RubyGems. +# +# The application 'diff-lcs' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +load Gem.activate_bin_path('diff-lcs', 'htmldiff', version) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/httpclient b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/httpclient new file mode 100755 index 0000000..a321a0e --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/httpclient @@ -0,0 +1,22 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'httpclient' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +load Gem.activate_bin_path('httpclient', 'httpclient', version) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/inspec b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/inspec new file mode 100755 index 0000000..b15b762 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/inspec @@ -0,0 +1,22 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'inspec' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +load Gem.activate_bin_path('inspec', 'inspec', version) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/ldiff b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/ldiff new file mode 100755 index 0000000..5118346 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/ldiff @@ -0,0 +1,24 @@ +#!/bin/sh +'exec' "ruby" '-x' "$0" "$@" +#!/usr/local/opt/ruby/bin/ruby +# +# This file was generated by RubyGems. +# +# The application 'diff-lcs' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +load Gem.activate_bin_path('diff-lcs', 'ldiff', version) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/pry b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/pry new file mode 100755 index 0000000..3694f93 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/pry @@ -0,0 +1,22 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'pry' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +load Gem.activate_bin_path('pry', 'pry', version) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/rake b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/rake new file mode 100755 index 0000000..e7c377f --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/rake @@ -0,0 +1,22 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'rake' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +load Gem.activate_bin_path('rake', 'rake', version) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/rspec b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/rspec new file mode 100755 index 0000000..333a6b7 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/rspec @@ -0,0 +1,22 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'rspec-core' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +load Gem.activate_bin_path('rspec-core', 'rspec', version) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/rwinrm b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/rwinrm new file mode 100755 index 0000000..4930478 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/rwinrm @@ -0,0 +1,22 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'winrm' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +load Gem.activate_bin_path('winrm', 'rwinrm', version) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/rwinrmcp b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/rwinrmcp new file mode 100755 index 0000000..3c52176 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/rwinrmcp @@ -0,0 +1,22 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'winrm-fs' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +load Gem.activate_bin_path('winrm-fs', 'rwinrmcp', version) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/thor b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/thor new file mode 100755 index 0000000..36aa5b8 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/bin/thor @@ -0,0 +1,22 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'thor' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +load Gem.activate_bin_path('thor', 'thor', version) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/extensions/x86_64-darwin-16/2.4.0/ffi-1.9.18/ffi_c.bundle b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/extensions/x86_64-darwin-16/2.4.0/ffi-1.9.18/ffi_c.bundle new file mode 100755 index 0000000000000000000000000000000000000000..dd4bec2f6b8551f317f02b8c24a710aa79278c1b GIT binary patch literal 180932 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 Oj5q#|4sUF;>3;$7Xj~Nl literal 0 HcmV?d00001 diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/extensions/x86_64-darwin-16/2.4.0/rainbow-2.2.2/gem.build_complete b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/extensions/x86_64-darwin-16/2.4.0/rainbow-2.2.2/gem.build_complete new file mode 100644 index 0000000..e69de29 diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/extensions/x86_64-darwin-16/2.4.0/unf_ext-0.0.7.4/gem.build_complete b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/extensions/x86_64-darwin-16/2.4.0/unf_ext-0.0.7.4/gem.build_complete new file mode 100644 index 0000000..e69de29 diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/extensions/x86_64-darwin-16/2.4.0/unf_ext-0.0.7.4/unf_ext.bundle b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/extensions/x86_64-darwin-16/2.4.0/unf_ext-0.0.7.4/unf_ext.bundle new file mode 100755 index 0000000000000000000000000000000000000000..b15e479ac64e3d1113c088647e5cf64282b8972e GIT binary patch literal 425732 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%0ARTfq~R5b`nw7sk;j0 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

5wo3vum+1OS49k-oBawJwiDsqD&nNnmsKn5+ zWMXJl&9%drJVFs3GtuhkB)Hf2tv^NvIC01gX@pfXESvt{MYs&ksyk+ElPu}VkJ!<3zSGmk@oZ}2hdPvqo9X*`1evHE$U@yDa z&IX+nO$_Z*%sd~*ZvH*Yzo+^4 zGXLJ@-^cv>ntwm@?{EGC%zukxZRBUxvYM4FV=)Vu%Pgidh1U|o(V=n-lVi9X6KxyE zXhx7HF|>;|_o0>t(Vsr_q#K>-KwDbTobPGMXnDuTJ67It@{X5xg1i&uoh0vMd8f!b zRo-dxPM3F`yzAxtS>9jd-5~Eqc{j7%3Zk2bNyk9#;Bfg{_S)`LfGPS5l9QEYf zE$1FN_sSV#TO^|;0I>SVi4?yD6h++Qn9e4tjC^q}Wj4|%Rt*mJESo@+hoxmK}So+{J|Gas+z zx~t{7tL3_@<+`iox|8bzxjvNZBe}}TRZgyt<*FdpCvxp@tgUR~7uN9;KeC)9Eabdw z^Nh2Z!Bi$Oo-xcY-`i{XY*@>~7|a0rQc=!Ia#ohJm-X&cmFsi4BIK$jSEO9k<%*T- zOSu}z)ljZRay6FgE4jXw>l?Y6$kkM?Z{_+*Y^KA}7x@jmbJHgC{b z-Y)WXmA9L`-R12eZ%=u9$=h4rDe_L0cbdG@<((n#OnGO?J6qm4^3Iiap1kwrT_Ep5 zc^Aq1KgW2PQasPIJVkMeQIx_wz`Yb8A9;w8Gq>?}{w?ac2{*aU?_6Su9+v81nI0}! zKg(%OaFj#rXAe8s#%4;@@_Ha0t&o4E{6EUSO8&L-uakeh{6EY8i~Jkp-zfhk`8UhI zMgFbwpO^oF{J+V6QT|KvUzY!O`LD`s)sZ^r0XF=4@Dg7LGGg<`MIN( z*I}7^eRKc9-1FLY=YQJ?Y%{k~wL|+`4|^`b4X$#T-#AAj^KNY3UzzvU=KYO%H!<&~ z=H1J@dz*J3^X_Zj{mi?+c@Hq}f#yBPya${25c3{t-owm$xOtB>?@{JG+Pu#=#z~HG zm;>x(7u(swMt){3t69mXvMn<%W&v}V#dM}Hk#US>1Y`6tRuAL!Fx2`W`qPJ=bfYsJ zXiF=a^F2-Znnrv{J+dfMJG85;zjVtfBvXr;#1X?!j=RQj*E(*b_0Rc~N<{nm5x%~H z<#K$;d%VM2yiO}QUp2l&NlNexPx3gA@-P#er-{zfB&eKxoX_@o1+<98zJgst`Ry$AY?SG^FZ?gZ* z_P@pcx7+^?``>B*yX=3r{qM2=z4pJ~{twvyLHj>s|A+1Wi2Wb6|6}%l-2NX-@*3bI zuK`Z-Gb%YBlH+~~aSwNM7rD5Ne~NhCz#kMz@>u~%F8w6$?`8c87dg+boZ>h~ILJPB zvxBW{;upF&2iu&3N0WS;loTdDmJ}vEp5)iSNny&d<~Y+g(X^Il5wmI6s(!7E8&;j2ku(Wgma@n=b4NmcnimoGxTb&mBD zKeC)9oRc|5j_Pv6%CXS4dCX=8Q<=ng#xRm$3}&Ty=T8dl2UzY)FS^r(j9VY zLU}&oect75-r$}jZy{xTnNmE@vs5vM-brEP@uV;+cXAjVn;gdUOb%n$C5Lerl6{0; zoiO3+I^N5-PMCDIj?bm68>S@J^*X@1-b1@?n4Ui+%&3qOX0}KPvlgX<**8+coL5uB z+^6ijIK?PRVIJU!j7McWCSyO{_t*UZ-4E3LAl(nv{Se&`)%`Ht57+$&-H+7$DBX|I z{aD?P)BSkePtg5x-LKI7O5Ojc`&GJMt^0c&uK@YTLvC&-S&z;2_-|p)Q@F`>e&-Sw zILm2HaFj#rXAe8s#%4CKo;6I-thz%O`Yj zQU_;r@T(5a>foFX&g(ZTOJxT=F|I=HTb8#?$y2RC)_rw;zo z!7Uy9qk}xjet(|q_vguef1d33=gEG5p6vJM$zj@u$zl3O$v)mWIm|4V9A=eI_IHTM zVNQkQF!z(>Ft1{Am|rP5EU26u7FJ1i%_h5MlU=jPuGwVQY;st>Pv&WIOlAUO8O3mh zFpz%qrUzZ=M0?uMl4g8I6TYG$Uywtz9%J-aU5}a8)2K@lv-FrRIkaymVAlJRR9 zzmc(tj7??yR>tpS{9eW%WNap5a~WI6*iyz;GPahnjf`z&Y$s!T89T_>QN~U(COTF; z1zbb1#%QWhl`2%^W6JUYWhl*?yv8fM$O}Bj(>%drJVFt=$=O}b9&$ct{XPnkpTFg- zCTCvDcX9`TTMv0o!VRu+ncq0a8BTJH!yKTGp8D#kpPu^bX@H&v>S>Uk2J2~vo`&ja zn4X5~X@s6e>S>goM(b&bo|fuqnVy#GX@#Cv>gh*4tkm#kS%Jw{aLra=yro{H|lni zZa3?8i*9%5cBgK4>2|kn_vv=OZV%}8pl%Q8_ONb`==P{?kLmWfZcpg;q;4b-eFJ9q+qQ$NO&7@xB{%yzfSx zu;{fqVe#vA!jd=Ygr#rR3CrH96PAA{!+X5LTfEMzyhKS#@C;A#IFGVTk7eqF7Vp&w zE#I%>>7Z>7aX*C^qsPDWc#q|~xrVIlLF%?ujpp|Kvm(!*5ilNiq! zPU+$8I)1KUc^HEkKwo;%oi22w9pC7oi5{Bj;afd4(?fGTw9rFKJ+#q7TRpVXLwh}R z&_hQ(bkaj-J#^7SS3Qi=!+1SR(8DA>OxD8`J+yX=7W_b@Y~TKOOd8XG`ec(qDs`w$ z0yU^k6jNoMCi8TeBdmW$Wj^7#I-y-dnaf-Li1&Gyw|RsA@iL`&o@aTA;$)c9OdZV9 z!E7DO(ZO6D%+tYq9W2(t5*;kn!7?4J)WMHBSfzv2I`~NkYjm(y2kUgOUI#zx;1?Zi z(7{F>6my)S6y^c$r2zTJLvC*8-v>Mokn@b3zsmWy^_yJhcP?>(vz+DxM>)iPYU*L6 z9?r>gUY-l`{3g#uc`nIwS)Ob1T$ksDJb%b@Q=UKN`AeR^<+&x#Kl1!5PpBIfJyO?? zgX@MR#p;HokJa@n>$+k29>?0rHa4??MS6U?ZfNmL-O%#cx}nv2+t#p(6|^$9{pMD- zuIsL@>#nZruCD9ObG%PH$E)Z$UM0`*D%W-0)eSR0ts7>2RyWM9S~tx3yl$8qQ8&!1 zRyWL#tQ!_Y)eQ@y%`L{`tT*Hfa#$|sgLVBKspT~4k|J}e%xN+=m$`+^EoE*c zb8DH~$lO-ub~3k@xr59dW$q+%XPLXm+*RgoGIy7`hs?cX?k#g4nUfqNk$7T>rW#eL zLPb8NEFVyY(!9xQyuyo=t`m;FV0@0J86f9CIS0x4g!RXGgd*Hl*Zcd+`JmtT!@#_D059>(iof*w}t;YU5J(!**!{G^99 zdRVK6b$VE@hoAMZK@S`Cut^VB9pf^;agH;bDTiD3YtYtMTS;k@( zuvrgV^srSAbFI%}I#Za)I7aiXPI~HOyPP}Z+$rZSIrquAU(N$^9+dNtoQLH+BIjRn z{w?P%IscLKUpYfcSa4fPSa^F%Sae59Sez>*EXkb`mfo2Xmfe*SmXC0(p$wuwedtLy zI@5u+w4yoRGfL*B#;<9_m((MRbW+Hh;;9W^PZG2 zp+HKQSTH3_DwN_9O9@jRObJsTN(s{nr-bQ6e82Xv@7Id@e(eq4uf6H}wYO5j+_zK0 zywWLQ{yTEMD`y!w-;?uwIX{r|LpeW^^HayFL>@)9K}!2vm+F+R!T zJj%m7#QhYaoSfz5{8-L=tl!OD5YEu7_AX#Oa}i9^&;-Qx6Gx_(l&+^w3lf-|FEz zJsfeYgY08BJ9wzB&xti|;uqHO6F;(?B`jnfv-v^hW->RId4~0=OkzA^7|AdOGl0JI zqC1!6EGuVAIa|ruTFy3dww1G;obBc8EN2%vyUN*3&hB#dkh7&I<(wyH7su*IP1)KRThoFc_?B;IOatnZO$Mpdp*Hj7Tp;H{ITNhcpgK`R z@EMi)gz|jE`@BoZl+dn$oQvgLBIi;$m&v(Y&J}X5l=CM!*T}h6&UJFGm-A;if01*8 zoEzobBx>JOAG6-(5NWlH+eVZprbF9RJD@Qhn}ks?YsR4KwaY4Ks74 zhFQf@{TWYcnDe-wrxZ{1r@*OU{*$R;!BeSTvXmMYJ(C(1Kbsnslt}ef7pY;{3#noG z-;QyU>-^3oE^wC9oZu+Ck8uP;pXccj+0v6&6@m-D2Y>n*Qg6)RZE zBIYxPnM`9cuc!K1eyX44r}|lbs-NYj`dNOepXJN>uAF7$d{55z<&2dxPR<%~#>-h# z&ICCV<*X%VZ8?+VtRrV#IaB1E;22{W#c+l&kbd;02VJ>0#cOSh?P)`XoSAZF$=T9+ zGrnU$N@&}}I8e@2&dH#Z&~dAAa7yU>mF+`PLf3}IFUVn7O6ZwmzCYUkYPPY1U2OMt zdyG4cneMyWxZnC-W197bzHXo8#>T_8e`P#i{cB@gx3@I5<+R(n8vAh2?MZGsYV2=4 z(ee?G$urjDEmv{hSmPkKMH{Oz%47Yw$Myt|^{UpVd#oR_Ud8edJq*)BMav&kmJb-N zmx(-=8a9+n4I9t;n$hk%&V9?cy)^%GTPe4_`QO*1hISvOhW1gZp+jnF=(sF3bjsuQ zU(IKdb9lix**Jx}ZO_LX%X4|n*Do-x;}y#<@{8pcj8{@ZkG!d&#~&%7*FCAB*UgmB zr%-C>Q^42XpX#Og?$gk|3tE5L@&k^4ujMB!7fubG@3Z_Mk6C|&7cGCp2Kz5-EJu0! zDdM(IQbXGZjrUQ}ehM1%lb1WGoEo~`VGP_V{wy_&JpbQzs-}i9)$Het?H8?I;xdnTynk$tCvBf1X9dfZIA*+vZqi*h5tgH==eqgAb<@CpzH#0BZl8yJ?E$V@-fO&O+-2O(4a-}M zF}`-AajeI{-?sfrb=$HDX<@<7ZoA#M)|lH^-}cp(zcl8v-pKeynoH60xAyU!jvut# z#P%ONR+@XPG`0LaPut$i_>8fIap`}LJIie>w@M8?+d1#gTW@du1!E^;58kr>UdFzZ zvVEX&FfUmiY20i-V~ibA!>B7Bx24lUtG;QW^-A;H>b8#lZR+gbrg!Y8i+`I^jP=;& zwq@?q*z!)x-E`bt$36Yq)Z2Bn*li1#%UABxPoAl%;rJo<{n>cZIKX4?Yqt&cm^onE z_|(vSmiteaXS#7_YUurs`^`!XeeW`_d8wiQarax88V2UIz9=;ep5lIsQ^U~w)|aG) z;b+~x!ei!w@ekH}%(QZhjj3VWpVqg_Gtt-NN(;yDS;cGtTie+g@~^>mD*(tiNe_iET^M z!k|I6_2)g?O1Q0$D_GxTd9&pXZg0!mZr^U( z4%=E;Z_fL+-PFw<+rPJ7)z_7`t*PZG%lmDQGybKU+Qv$5J8s+8ZolPRM_A937N$0` zUMMY0Kkc>$(!$KT?pq|y^FX&3OY?cWwii$HcjNB&R9aY=?e>ys{vUGtt7&0rBkQlH zdG8z!@C-}<|0p=A%tEp0E87TP>&+lOgBL&AM3riBju+%}93Zhz8k zk+zSv{%Kn1-qp4ewne9fUZ30E+j@<((09DsU$Q+dEe!b7_UYC$)573^ZhzhOH`2qP zO14*ExNURX{*LYM+Fs7K4_R#6Shsy>`$x9FXWKix#Z229=(}lJnDL#yo2B`AJ@+>y$?_^r&d5U`JezsDmP-yP_?Mn-n+RA^$_B+!<*RS2S z(EX3tUf6vO=x?3%>u&Fo7RH`P3;oWx?S8lQl&`;h|GMp>Z9n+hLyl9>ZEe!S_}uBC z=QZ0qSw3oeKHKl&AKQkch4!7(eNX8=J<~(~J8aLB9xiQ33teueg|4GK7XK|+DE!3@ z^15HY^f2SB`ONU|-#oYHvu#v*n0}A1yJTL!yWa!0^*4`;mhZEDKzdj@f1>AY{Ovwt z-M?mfST!X*tS+1peoD;4Q8MaSzzsVeWsepf!d=H-)_KY=-;@8Zuf4Fgv{S7e=WNT(PlARTf#?=qU z#?=qU``I?d*Di9OGWOZqdJjr`5zfB#O*l8de>lHjez?%pw!hYdi(7vVm+HIUg!Is2 zVtQyfE8V|W>7n(U^w4H*dT86p{T8Q(_Dj=4hh^!ZHO@o6|$zE$N|O8@Ih@K3hF@ws~CcP7j0krH3I$)5Fk~ zZmaG1=hDN7E9qh6@9AOG&2-NX(!-eBGQ!x8+?FrHw{#i)1~0>(Tx9r@w~R3P(G2hZ zpW)B*Gs3jTGs5)0?7w(MnE6D8zwycNH$EBu#wWwy_+*56%^c%9p3U&~Nf}{LiHxxL z`3!H(m=Tul)m6!iu)K-ezoH>uu-*Q0jG3e{-u>p<_Llk7wVp&GnbzZtv6RX1v-}M2 zy^#@GMP-E6i5a0yt&GsNc1CEIk`dZxXM_$p8KGmnjL@lmM(F%SM(FZoM(ElgBXnz+ z5xPg)M>QH{gkFs^Lhr9KLZ7cQLf>yPLcb;%p?}kiFyPyaFz~yKFzEY?F!+azFr-;V z7}`7|3~P}QhPTWJBU)vIk*zbrs5Tj4blZ$DrkxH8nRh#&0kJL<5L4m<0xiw?W$ zu$vCMXM`D59lr_{>7m1(I_#yx-Wg&3$F}v+VP75g(_w!d4$$GijIgY%+diNSrFoOr zc!d`^@A#*A!SZuF%@aJvBNX95?xP_2$;+MGLEzQ|-~Vxgt6b(c&T)p59OEzt*vl@q zvxSZP%vx5nl4Xo=u0}dnqnxXW&ebI6YN>Oz*li1#```VXt6k33Zs%%`bG0`k^w^gX zdd_m&boM(}2b`;e&eb93>acTl#JM`^Tpe?+jyqQ;oU4=0)hXxdv~zXFx%$<)I_q4W zbFR)iS5xe3oSrT?SHC$|7oDq1&edh->WXvqyK{Bbxw__DUH5pu;qm^5$NNp^>QCqD zFX!rS=jv8QSn!W?^{;akGJUpYrq|bHdVO7HST@rBC;oRFMl*t;45B}M=t(zvxo=lG zTkb$xTK%_dTWgwI{+_0MO=H`>Ad6HQ+4d#%$ReE-lBq>a;)o%V&-s)}RG=I^W;z~U zx(0J)h7osVhLPEp-={Pmy3c#O!&|)0tGq->y1epGXiuKZFgX|>^~ofK z+QbvXa}x@Mrzmb8#VAT)B3$!#XNIo%GDElgnW6hVnW0C4%+Rx7X6RKY)3?u=q0fDp zq3`{fq2EK9p?~4bFrY|g82E5z7*sUVpXFwTAyw?-(abQcSY{ahm`sn$R6H|`dLlE7 zj&STMJee8BJ(cNgR5HVaXEMXYXEXgQAk$}lWctjH%rLb|W|;P=OrObgzj+oU|9|t# z40EbwhPiny-${I?pT%YRSzKmVl<2Wg%VVLo$3l|FLULwUeuw)6Dmdmx{5`%<_=Brl z;=*`8|KKzyILaaRvxl8*V>26A&l*;-f~72CK69AKG$u2Fv5aCkLl{Uu;&l|mF^{8z zlrgtDnW079%+N9=)8F`HdRmz2DM4mvn~@pXWoCM>u*}dQJ2Q05$qb$9Wroi6Geegz zoU1RLs|L+gw{XS1p~ZR?byx=c>yNvAHwo?&$2t9-*WWL;MO%;HQ-1XL+av#8`S;1cU;YE~AC&)) z{1x4&JgYqZJ~Wo$ZC>XUN>PHRDbAx5;Q=n_>bkB9S-zpG{Kh=w;->t;`1d%EU#{|} z`Tu49f1Cd$>*x7b2O%r;JY)H`tkC;}@dyXFJuCFT<^1olyn`*=krjsI$_hj8$_m3a zSYO9#RgHh zg&qaXu~1g%^?*5MyZw9jdoU~XD`JkR))!AH6pChrL62mG!H=5by^s~gf9bZYaYaJOtT3rmR+#)^mZyzbVd~3S-g7w1 z>qoP~jMuZm%r~;U=Wte-{Z^Lu9L@@JQ+!P=N@s-y?_`CApJ#cW0P7KQzUx@!9IL!z zed1UZ9V^mppHhJjIg%O1_^vcl5jtg!44%c;J$v#+~iIZcKxIzDf?Wmf3i zIxBQJW%&sE*g;lS7|^MtW_m*KhRtonC*?>n8UZpB4J7Gq!bGd$;{)xs%(v z`nn#zuD7pSV%t3W`MMd#NsM6_1zcYRUU@bQ%nBW5F~GJ#<}=uQdRgv5J94{UZue_p z`CA%OpGjGv({%Tr;r_GrpJ7`ahM3P-^GUG0D$8^DEbotR|JAL}^ELB*%_8Gc<1$~n z++0^@g{~`n-OB%Rm}`Xl{^T)N*;t-NGmC_y9>+g>%)M{@ZT?3oe(`nB8jDlGJT5rj zMJ+!-0rGG=e~&2=u5-fq-Q;{-vV4|5ea+wYeZulB^F3tT!%1`5=A7*uBl5v&w%QCJoUdamGf`6y~dikNS)cWu8 zwQ;{D9%qZJpY=GNZ=AzSrZJfbjAayS9J^?CSU4yBgawuAJx+=H%kqCIVBNi)8q3D>j2;;)Q1JeC_8zaWQ9LblID z$@UuO?9l42?9e)Iw(o(nL)(Jcq20aNq5b{Yp~C~&{v0Mdbb2^Dbbcf|ba^z}OD(fQ zx5u(W_s6rnMMQS!`9yZ;^<;MFT{1iLDV6PGZ?Z$bm$F0um$QAOUUnGxYIYd(zic1J zn;nL{o*jn1ksXG;nH`3|l^sUBogGG&&JLsA$qu96%?@MAWQVcuWruO^XNU10W`_x7 zv%|!4*@fM`Y`;^>_B*xgFs(zj*U)Br4Q;mTGCR!blI?YV*0pm8w^P@05{bkUOEjB2Us%s3_gPOh z+p1E9ihN92K473e_vv%LJ`d>gpgs@j^RPaT=<}#PkLmNcK2PZLq&`pS^RzzC=<`>7 zp4I0$eV*6n1%3Xe&x`uJq|eLxyrR$F^?6mF*YtT^pEvaRhdyuW^G|*LrO&_hc}t)F z=<{EFhMX||wwy5G_M9;Bj+`(lS5BCmJ10!JGbc>FD<@3LljAvUPMC3bPMDc5C(O#9 z6K3C&6Xq1i33ChPgn5N>{CX)TEVwTxEWAI*pOJX%KIpOgP)=A{I43MCk`tDf(Lrh6 zVL-i{FmSbF)z1loR~nbG zm<4>16GnWQ6Gk@338Nb3gwc(1!kET6VeD7`=jblLvOF6;4qvXj3)Z3Q4%Xe>-CcA% zG&~(32nyH=*xhV%o9piG?)dh$t>5{+$By&3u%^%bwOTRr*Ktuhzdt|62X) z^sm>yLH|bmoAhtiKdOIB|G54M{ge8q^iS)b(LbwyPX8ADTlF8Rf1Cb`{Tdc9msw0_ z3jIuE9HZ%B1Rb=|LWU$Uny9C`e>?w1-Zo(nmA+iYov!^YT+dZp$_1RwX`INh9KpdH zz~1DuGuyExn=ptEyxsRU#s1%q@(}m4=7?SVTYS5OfAA;2@I7DgDIf4Q_xQedavSaX z57WOx|4#jf>pw#OF8#ap@6msx{-gB&K>rW*|49Fj_5VcwPxb#y|IhXRLjN!I|4RR_ z_5ViyZ}tC9|L-3Sqkqu<$4A51pB@e4ettBJ|K-sz;aB~C)Bkt<|Iq(W{r^w@zx4l` z{(sm1ANv1O|9|QKZ~gzH|8o6T=)Y3`Rr;^ie~tcY^cc4Ai zKG$p-*yf!dwCfH%w;MQ zIPi!a!oD1PM1DA&1KF2tecgtIp?Rai5Z$;i#5O4m@l6XuVza`K+`KTPwkQngEek_t ztHO}ox-jInDGV*!7KYaC3jOhTVQAZ-FtqPj=)>#^L&wgAp>vl)AF5v%M(kD?x;FR! z-rdiUSLpZCLcgCDhS4V$hA}40hM z&cZPHuEH?o?n0mIr7%ppw=hhvpfJpOurSPisL;QoQRv^%C=Bx+E%fhb z6ov&wg<)ZFVOUgB7#5cnh9zbCm+N1le`R5KqN*?~jTD9_tKGZQxOb^749hn6>p0D| zE1<`53uTD+X3iJJd?eZH@E zO?}$~&b$8ia()=>%X?Gc*LoxevNyX@r+>Zv4f;3g-=u%D{@ePtJU=F?e@y?l{t5k) z`ls~Y(YI~t`=s^H=%3X;r+3^13eOyD%%RzQ!J+eyPt>Hod{Kj{CX{y*9O&-VX|{=e$~oBqG+|A+p6>i>WC|Cjy$P5-~^ z{}28DssF$9|F{1C(SN!AE9`%z{;TYNwf<}Df35!O3d8vI`iG)0aZpj{-JmG+ZCDig zH!AWra#5JPNl}=xX;GNES&`2(ROIsv75O|vMLy3^QJA%LQJB3=QJAxBQJA}3QJA-V zQJB9&kq_f63JZ5C3X3-KxOOfIOLi&p*QScXW4jfF$McGOPC5OrC<;%0=zU8!6osdQ z@3;D}{II6)zwiI?+^YLu&K17=FaE~weLIDp_?9ny`BQ%NeLi%4?|j$!Ca>~>@3V|2 zSmMhI_|o^8BEXb z{MMq7IIhpVK~YHEUKG-I6oriUt7Y#j3OVmvYq_f^wBB75hTc;Y+U_k1?e`UhVfPn> zjt7cDr}wW7PZfpcwEy3OMWOqlqR{hjQ5gA1Q5f}TQ5fz0a$}D4^A#3_aYaR8d~s2j zP@;dS{$=`m|5$&y{uTOH>R+XQME`32YxMViyqUH7*Xi&5esk*eKg9pDw{Tuaf z(*FQoZq`4le@uVx2YfuPzxM$yP3WI2^7q^QI`{TtbADYdMPbYt9(TSkpXqTA^|(iP z+~bNucBaR@v?#P(?{R1Rns)Ymwqr}Oeog+IaONgn9>kj7okFYE%jM30@F&0UJzw!D zAMiG>@gmQ#lqJk(7K4hz^bLx`jBj-Qk}+QIr~3Nd-rd3&x@ad$oCYG4@(A~F2RCsI zmvI4SaSF%N;qe~nY}2w`%VAn}db~Z_9qj9ed%PokpZ&eOC!<`GU7e$SpRatM^nD02k!!lr zd5y21;C11jUS8sL;pXG>!=GL*^y7bae#-}Qyx)Zfec!u${Zuc%=5^t9*Zgg-3!i!} z_|kL1JYT=D@AH$_g`bPU;?Moq!M^`5UKf7%T<}k?L;v#Q{_V&8$B$d?=Uw4-aHXGj zmFJ)?KR(a*Z{b5f_HABewccyASnJ2H^W&fQbsHCl)~B4C6o<9}=cdJB*n5ZOhs}yZ z=aYvG37Z#(5euDL6o>8^&Mk|>$X@4G#bNYG?|6IFwHWEk+Z2cK?apnB!^D(xyW-H- z;H+T#;xPFU=MKeT>fO#Ay?)%}ypjtzo#Q!-or?XHqGF$J+snHYhlRTq`@39z4SB_3 z$==0bAm7*TR~#PSzu1RgdUnqu#N@bb0AVbmS2_b*<))AhcqIE<_DYkb^wDkupH21>k-w=^soDD^o4 z%Y0t*vM^9k9v&Mg504jAgeL|n!qS4u@Z>;cc&eZ(JUvhqmVNF2^~b^a;UnjpyuecK z_E;AePUL1O7cwL)S9Qx-Jhe`9it}Q4IQxHI=*nEj&8FBONmFS~}XxQ4Il{D#-Hw>|dvio@a$b^gU;|J7sv z&13)FWB;SrzpEwxc4k^?^)vBv&6k;iF?nI(9>QL zMh+_pqdH2$=+2TbW_U>$JEA0v>naK3yGz1^o{}(eWJ%~9RTBC}mxTT?C1KLok}!E( zNtiOeBut%95~fWo3DbK^{PtZEX7-o(x9&>9?8zlz&XkfccWOzPH?72nw|E_z;dN+c zNmw+iBrKj?5|+#<2?KLW!ejGF!sGKx{M%S1Vd=sWA0J=h!-<&`56(8~j&+`QHnZ^XV8A^gW%2-|!npc#B=t|vJ z>AqU`HM+0WeVy*>bq}Q>JE%0|HYg1(8g} zqBIQOvNVj?sx)+MT^hQ#DGfc_mWGkrmHIf+(lC05(lBPnQhzn9)Z3h;Vf-$o{(5<7 zn7CVM=*=tjsdq|4|L&z>(jKK@@}8w(%3h^m>fWVc+CHUW`o5)M#(t$?=KiHVS4FAM zRZ;45Rg{Lg2bTI=6{S8`MXAqKQ5qH=>bc`E&mD)CdKW^e&s99M8Z$>U1HQ^%Kvr%xyi%N}wK?&Jn8=R8j3SPo%dc4J#MVaEf#U3uV;@GpMnJ3i$d zUgl{QGmCyk(?NzNswm`MZsBS!;!FxSg2C*;j_fleKWyO~#EKz9!e9KvmwdqMJjdhA zV=Ck6qLnzcl=2{Va6OlCE|F6I7H+BCm)d=)-Iv;Zsoj^_eW~4-+P(f!{bTya^-t)Z z)IX(vTK|mxS^abRx9H!h|4{wg^l#UHnEoC5cj`Y}{}K9k>EEq?kNzX|AEp0j{m1A( zR{wGOkJo>K{uA}@)xS^we*GuuKUx1N`cKt=n*P)EpP~Ou{b%VvTmL!w&((jP{`2); zp#MVs7wNxP|0VjL;u;*o!R*7~gS{>8+=h)=Gk8e&C%^G6pYS#>@f3@gNgtyaMw&({ zd6av&nX9;vGdO|6Ir)J6aDa1nc3^V?%MTb5{*NE|g7%T((mHMyJf3^N=^k1w0I{nw{AIj{%%>K*lzs&y2?7z(Z z%k00*{>$vY%>K*lzs&y2?7z(Z%k00*{>$vY%>K*lzs&y2?7z(Z%k00*{>$vY%>K*l zzs&y2?7z(Z%k00*{>$vY%>K*lzs&y2?7z(Z%k00*{>$vY%>K*lzs&y2?BBh^5$+w1 zEVKVI`!BQqGW##H|1$e8v;VTNY!}yHYc^u_{zJk)_?2(?n74S5Ct1i0dKpPODH^EY z5$@(DuH*u)-7i0!?mV8u*q?m1XEWCC=N^wg`GL=Qk5_qy0p>87u?#0ilxm8(pWC>W zyY|fwmpISnB#z=h_F`wYVnbH#J0$#_NSXbY*?*b+m)U=r{g>H)nf;g9f0_O3AJspm ze_a2B{z?5)`lt2J=%3X;r+|6cw3^zYYylKzwRpQ8U%{io?aUH=*S&(wdG{>ow-9GLU_=E5HjCXm3Wh`MflNduMS(=GZMBU!`;XdcBT*Jkj#fcor5cXsz zwqyfV?mZ;@ji3374|#*$yZ-2Th$zuf-I?Z4dq%k971{>$y( z+YU#0+u`VP`!Bcua{Dj0|8n~;56hl#4dyeA33M}*1a)Ng$`57Ehq#j)xSaDim18-C zec6p|*@U%wxkuo4zT;Eg;bop?F|+7rG#zB<+SB`xomCWaFSl?t7jY&99Km4rU`MuK z5G(d{kHAlS$p^g7b3D#GrZS!`BIWj9ZvW->UvB^9_Fr!Q<@R50|K;|te^mdN{&D>i z`X}{I>7Uj=qkmTaoc=BPx9UGs|2F;G^&h5xhyI=V57&Q${$2Wa>))gQNc~6YKU)7W z`j6Froc`nWpP>Il{d@KA)4yN;N%~LLe~SK7^`EBybp2=OKU4o%`p?#Xj{bA?pQrzP z{TJxJQ2#~xFV=sF{(XDohgR1iPA#Q8$Q@kIWt__?9K*rv!>(+@#;n=HJp#Y+EuZi< zFYy$Mm`NXVch3)_oWn@dNF|SQ4>xla7jgzCa5x9BJ3FvBf#tiqN8m@k;C)`>Ssr69 zPv+-`Db8_>poJJUl(1a?75cB#f0h2L^T7Cudx3L`>(M73j43H{|fuBuz&rd`p5K->z~j+ zseelUwEh|Wv-;=sZ_&S1|DpP~>EEvZF#S99@6>;|{v-77(!X2(9{oq^KT7}6`j63n ztp4NlAFuxe{U_?*tAC&V{rXSRf3p5l^q;E#H2tURKSTeS`p?pTw*GVUpR4~o{pahy zK>vmMFVcUp{!8>f$u&5N1KEq6*@_KWwVQh+e&K6A;`?3wd7<+Kma>59Or(c4lGIbq z!`#J_{P3CcU0z`sOPI|h#?VQYW+D`EAGdN1 z7jqUTawJ38lbu+u{|fzA>c2|=)%vf|f35!O^k1)ksI>n|`>(YBO8c+0|4RF>wEs%` zueAS4`>(YBO8c+0|4RF>wEs%`ueAS4`>(YBO8c+0|4RF>wEs$%uG0Q1?Z49gEA7A1 z{wwXj(*7&$zta9I?Z49gEA7A1{wwXj(*7&$zta9I?Z49gEA7A1{wwXj(*7&$zta9I z?Z49gz3=ci?>juc(*7&MvMpVM4OqF$f3LOQw|DkFZs%8g$QwM*6U=8C6X<3r3F;{0 zA@1Y`F6TT>EEG$r~bqBAEAGj{@wcb=s!~bQTmV8 ze~kWP^&hAIc>O2nKT-c){rmLq*ME}!ll7mX|5W{_=|5fn8T!xEf0q8U^`E2vT>aYbf3U)e9I@i%}YGRB4*OZD29=ykxCxr9&Y9;F60bO;BXG$=pFLI?#><9 zoWSxO+$ZoOU+_M!@hr>rU!ng>{a5L~TK_fruhoB@{_FJ*RrX(H|5f&1W&c(7UuFMQ z_FrZHRrX(H|5f&1W&c(7UuFMQ_FrZHRrX(H|5f&1W&c(7UuFMQ_FrZHRrX(H|5f&1 zW&c(7UuFMQ_FrZHRrX(H|5f&1W&c(7UuFMQ_FrZHRrX(H|5f&1W&c(7UuFMQ_FrZH zRrX(H|5f&1W&c(7@6QfS@Mi~)xdwBY!Z=3ILW~+pc!1lvj!QX*lR28xx6cm;IrnB4 zwq_$%Z|^>VU-^cQd5af$l7-BmmyxuSqJat?;cjl?N-p4ZF4-yE z?i2WvANZX2c$H@uU=EWR%Wxu9_FrZHRrX(H|5f&1W&c(7UuFMQ_OE|b|Cs)9{S*2p z^-t-a)<2_vR{xy-E&8|WKUDuV{oC~)rhkY2o%#>ge}w*B`giN!qyI?#N9jLW|1tWH z)qkA+F6|9t%y z=)X|^Mfxw+e~JD%*C0wY#oW(rT+1cgxNUwo+j$a4aUgrKGh4ACtG0EYz%P8wN4&`k zEM)=HnMe<9B&nyIhq;Rzxo;aE>*740(>RVp*^fN7V^h{`<352u_@2*rmseQE5@s`r zF?5opnFvMP$8!Bw=)Y3`Rr;^ie~tcY^_1}v5f3+F{}KC-*nh_1}v5&MtWf5iSH_8+nTi2XL1fTu75)Rr2Z-W)B0!h&+4Dk zzeWF6{fFw`rhmKs!}Raazf=F=`j61ROaE^Dd-NZv|0w-O>pw>SvHFkGf4u$^^q;7I zul{}d_v=4N|H=AK(SNG`)AXON{|xOV{W+4|4Xf3E)X^q;T)0{s{2zexYZ`Y+MH zz%@96!R*0~Y{4K_Z0R0}pZJmwc%A2XoOw)TJYBRhYK#03ch*wMgWSROT*kSa!Z94o zKJ3aiY|NT1+#~QC-|`7>^Ab<7h?(>;iYc4>SUzW(Mk;xfd$^gaxR5hAfx|g~-PwTw z{R^r?bfDVDoY#c-Kut&#)Q03hZAcZ=h4esO$Q0Cv>_C0U6*PpFfrijp&=`geG={c< zrqDjn6owTvhmL{f&{+@-!v~^aL_sWc4a7osK|J&f#KXvfL>M)Y2%`&j4eoo zaRaF^z91bY45Y)vf=uWg$b`OvZ0H}zhDimvFnJ&srWCYrRvw1;^G!@~T5VPQc*M_4$};q%~ihQ$M&VM)R8FfcGYJXSEm z->VrBo+#)FO9#5blLg&AXF_*)x}e9$oVo^q<(s=l;zz#VeO}{P9%C+3Sh$&w|8$O^ zg%~xI@Bp`S9hY(rCv!9hu{XQ0H5;*dGxrGm$~Sz>TfE4VEaaI@^TP~hFC%FuMFSN) z!rk1&m0ZB-9M56wPd?kT8S6K7kHDY&z;gXp*#AoVUuFNR?SGB^ueJYm_P^f#L$&As zYR~`Gp8u;o|5tndulD?3?fJjj^MAGH|7y?w)t>*WJ^xpG{;&4@U+ww7+Vg+4=l^QY z|J9!Vt3Cf$d;YKX{9o<)zuNPEwden8&;Qk)|EoR!S9|`i_WWP%`M=upf3@fTYR~`G zp8u;o|5tndulD?3?fJjj^MAGH|7y?w)t>*WJ^xpG{;&4@U+ww7+Vg+4=l^QY|J9!V zt3Cf$d;YKX{9hfGeeN2($E!TUo16HUZRZ>&GnV1xh*C{4_j4Q9atUX15=U_$d$BWH zu_3EAagV?+e9cF^$!8nqhZmenS-^BA(nA|b>M7@8?&3zS;CxQwI1Xh$^4N||S+}u! z1peTAKI7+&e4M276_ydH_WW=EHTGXy?fJjj^MAGH|7y?w)t>*WJ^$+;)jy_xT>pgr zN&Qp$r}fY1pVdF7e~bRD`VZB=P5*ZNhw0y;f2aP#^&g>sm;T-Q_vk-T|55sn)_;ut zWAz`W|9Jf;=s!{aUj6&@@7I5l{*(2eqW@I=r|Cak{~7wv)PI)#v-O{&|6Kj&=|5lp z1^O@4f06!+^#nSX7V zAHH&a$QwM*6U=8C6X<3r3F;{0A@1Y`F6TT>e%N#{O%(de+!~ zjs4fye~tau*nf@v*VuoJ{nyxkjs4fye~tau*nf@v*VuoJ{nyxkjs4fye~tau*nf@v z*VuoJ{nyxkjs4fye~tau*nf@v*VuoJ{nyxkjs4fye~tau*nf@v*VuoJ{nyxkjs4fy ze~tau*nf@v*VuoJ{nvzL8P}kRDhj!mTezBwIFka7U@&{IBU>R${V;(;3vN1 z177Dj9%mj?8BZ6j#Hpo}2f2gmxr}o;g=09Feb|+4*nN<{i|br7$bAC8@hzY5HZSoM zi-_#-Ut|9@_FrTFHTJK6RR5U%as3neC-qP1 zpVmL4e^&pT{w?~q>OWNfHvQZ6AEtkY{+;>{*MEfmUHW(H-=qIX{YU9PTK_TnkJW#i z{^RwZp#Mbud-divCmepQitG{b%SuQ~z1|&(?pA{&V%8r~iEY7wErG z|3&&Q)_;lqH@gN`aUo}L0*7+|yK_*;4?8$FC$K!YPvA$s;C)`>Ssr69Qy9kxT8L3Y z2@h~P*KsN5a56`85XZ023wt|vVQV&G_4>i#AN+-^3uEYN1vpt)!e%;{kAO7SAKIc7N#ewX_&TPeotXexb{GDI;nvZys7g)*yrZbTq+DKAQIS+FeH*y8H zuE`7MJ5S>{4rM>`*p5i8{ny%mt^L>9f35wy|8H>r-&kw^wf3)nRR5U%as3neC-qP1 zpVmL4e^&pT{w?~q>OWNfHvQZ6AEtkY{+;>{*MEfmUHW(H-=qIX{YU9PTK_TnkJW#i z{^RwZp#Mbud-divCmepQitG{b%SuQ~z1|&(?pA{&V%8r~iEY7wErG z|3&&Q)_;lqo4N+;)(j5+<`2H-Gv4JDma&A{Okxb3WN9Ws5%+N`53SA%*ElccEKcM| zhOj3)u_YU@a`oWwH-6?TKI9Fa=LzOBjR|x!lmvB@@eoz3^1_|Y8@QbFIF(~LgnikK zZP|pis|JUE@jKtKT>lmNuhf5){;Tz0qyJj{*Xh4r|4?WDb@pFp|8@3XXa9BfUuXYy z_FrfJb@pFp|8@3XXa9BfUuXYy_FrfJb@pFp|8@3XXa9BfUuXYy_FrfJb@pFp|8@3X zXa9BfUuXYy_FrfJb@pFp|8@3XXa9BfUuXYy_FrfJb@pFp|8@3XXa9BfUuXYy_FrfJ zb@pFp|8@3XXa9BfU+3StaSh(#Wu9g+v*>3u9b{;tiulUBQ0TmuTezBwIFka7U@&{I zBU>nnDRL0XqD{+Rc$P2a3QXb?EuIDn&mSuWrhi=jg#JnW zQ~Ia%&*-1kKc|0-{;m2C)xS;ucKwIx-=Tk}{=@Yjp?{bD-TL>`*}wjy^dGJN82!iU zKTiMg`cKe*qW-=5_vzoS|0Mk<>pw;RsrpaTf4crN^q;B!Ed6KeKS%$$`p?sUzWxjJ zU#R~g{TJ)MME{wtK_8moA zPqL614E#GU^g2h<&T{=%=)Y3`Rr;^ie~tcY^+QeZ{_E|(-u~+QeZ{_E|(-u~+QeZ{_E|(-u~+QeZ{_E|(-u~+QeZ{_E|(-u~+QeZ z{_E|(-u~%+2?YtTRik8n3PaU~aUI>&Pu`;*W1Y{vS3yGP(pe&BQ7 z<5iwvfEWIi=O2b~pTJm#lOsws#oW(rT+1b#%}E@^f$YW3Y{iDG`j>kIe&K6A;!R%Q z-GAnVrOpLRXCghck))n-9_B70_4Z$H|Mm7?Z~yi7UvK~Q_Fr%R_4coSRR5U%as3ne zC-qP1pVmL4e^&pT{w?~q>OWNfHvQZ6AEtkY{+;>{*MEfmUHW(H-=qIX{YU9PTK_Tn zkJW#i{^RwZp#Mbud-divCmepQitG{b%SuQ~z1|&(?pA{&V%8r~iEY z7wErG|3&&Q)_;lqH@XH_a6YGT9EY+Wd2Gj~tox^X1peTAKI2`!`bS=P#kq_n%w`f} z=p;)s5sJ8vTe*gdIg1lHk|FHLPHf2rto(<21b*f#e*b%3_|W+V&+`QHnZ^XV8A^gW z%6N!7xq-_$k5f68<@&GCf2IDb^k1$28vWPmzfS-4`iBPlZ?J#w|J~60e>ZBd{|5VS zu>S`8Z?OLc`){!S2K#TY{|5VSu>S`8Z?OLc`){!S2K#TY{|5VSu>S`8Z?OLc`){!S z2K#TY{|5VSu>S`8Z?OLc`){!S2K#TY{|5VSu>S`8Z?OLc`){!S2K#TY{|5VSu>S`8 zZ?OLc`){!S2K#TY{|5VS2+Iy}4fbU>wq+C6{@pzizq8_RdEqp<7*p+SAm`H>DH`srJ{WsWugZ($ye}nxu*nfll>mSuWrhi=jg#JnW zQ~Ia%&*-1kKc|0-{;m2C)xS;ucKwIx-=Tk}{=@Yjp?{bD-TL?FKT`iu`j6IsjQ(Tw zAE*C#{U_)@QU6~3`}FVEf0F)_^`D~uRQ;#vKVAPB`p?vVmj1K#pQHa={paaFU;hRA zFVugL{)_crqW=zm<%KnWxliIZzU33%<|UqD5i{vy6vIfxla7jgzCa5x9B zJ3FxV|K)|voq^^5=RScS`GWU(jc0j`xlCakBWNK;4JACl?OeyDoWsc+%|YzVVSna@ zU7TC95v%`npTMtt!*cys=)Y3`Rr;^ie~tcY^>9kqi#*9fX3)z>+DXws1&?qyH*qBwa5~3x7$^Oa z7xs7Nvpt)!{tx#F{K*e|&U?JdGYl|?$&6(CTPwOqp4oW%LR=Y^x32eKDC zvlSb%>UZ}E{KD6K#GAapQWg+twEsr?Z?ykL`){=WM*DBH|3>?7w154h`p5K->z~j+ zseelUwEh|Wv-;=sZ_&S1|DpP~>EEvZF#S99@6>;|{v-77(!X2(9{oq^KT7}6`j63n ztp4NlAFuxe{U_?*tAC&V{rXSRf3p5l^q;E#H2tURKSTeS`p?pTw*GVUpR4~o{pahy zK>vmMFVcUp{!8?q?ix&_hc=SbQ_jQO#f@CS`CRi`UO3Hp9EY+Wd2Gj~tozM<0)Oy5 zpYblQu#6?lW)frQBug_9inxzkxrRG`%?lSh&*DUmWC(k*6I-$YD}QyLz|VZehrGe_ zJi&aXF@bJ|l3=<1EA(Hf|0?}g>%T_-wfe8qf4%;p$^M({zsdfa?7zwWo9y48|8DBf ze>ZEg|0eryvi~OgZ?gX;`){)UCi`!)|0eryvi~OgZ?gX;`){)UCi`!)|0eryvi~Og zZ?gX;`){)UCi`!)|0eryvi~OgZ?gX;`){)UCi`!)|0eryvi~OgZ?gX;`){)UCi`!) z|0eryvi~OgZ?gX;`)>-%>Rf{|9^y_4f5{6sI4|csPUTn*VPAG*TQ*_sFYXigo$vUR zcX*knSnu|D-0*+uXd$1#0Fo+dDdtU-S@g*PdI?wSq z^O(wbx@aX%E$N@~LaFmX?jX`+|4sJaWdBX}-(>$y_TOaxP4?ep|N2MukLe%RKcRn8 z|CIh|{WJP!_0Q?wqJOLYL-lXdzg_=f`giExssC{ON9fVdjAEWM{yu~u`^q-A(3YLZ?^wt`){`YX8Uip|7QDdw*O}P*FUO%O#it43H_7$ zr}R(jpV2?7e@_1v{af`Ps(+jQ?fMVXzeE2{{fFy6LjNxPyY=tUf297S^dGJN82!iU zKTiMg`cKe*qW-=5_vzoS|0Mk<>pw;RsrpaTf4crN^q;B!Ed6KeKS%$$`p?sUzWxjJ zU#R~g{TJ)MME_Oaxkus`zUCv|7k7z^_254cX1(?LTV&QTvbDf7Je? z_8+zXsQpLnKWhI``;Xdx)c&LPAGQCe{YULTYX4FDkJ^9K{-gFEwg0I7N9{jq|55vo z+JDskqxK&S%f9#Mx*sq-CP=4lo)i+)DaL53!(DCAyl;c718ObR%H!R*0~Y{4K_eD&X-%kNuX z=7pb}U-AL3^Bj*ek4V)1qxK)Q|ET>(?LTV&QTvbDf7Jf{?qiIuKx`EXX-yo|JnM_(SNS~^Yovu{{sCN>c2?; z#riMNf2wORo-SI6Q%fliatGIQ8Rv2e$8a$Fuq)fJF>Ai``?l--Pv>uZ%O||eOFYFQ zX41zfhLNU`N*?7NZssa3c2|=)%vf|f35!O^k1*P4`9d+irIh6{$utZv;Ua=$Lv35|1tZI*?-Lb zWA^XkKezVrpWDRjKW6_i`;Xaw%>HBcAG80M{m1M-X8$q!kJ*3B{$utZv;Ua=$Lv35 z|1tZI*?-LbWA-1j|Cs&9>_2AzG5e3%f6V@4_8+tVnEl7>KW6_i`;Xaw%>HBcAG80M z{l~(x8rPtN2e_THBcAG80M{m1M-X8$q!kJ*3B{`HUQAJadse?tGH{we*_`e*dd>YvlUMgLa) zhw9&^f4ly}^zYEWQ~%-mkI=tM|8D(z^dG7JDE&w4KSuwt`j69py#5pPpQwMY{(buQ z>pw~V$@)*xf2#h|^q;Q(4E<;7KTH4F`p?mSuKx4%pRfM{{TJ%LNdLw9FVX)J*WheU z;wVo0G%p4#riVa!ysrv+e;cGtPO@*iUEIhOoX=@o{7GIo z&Uq;Nk;isy%DPY7C-4W~^BM2*3d>l+Y$h>=PO>x;p@{pqm20?|8$QkpXE{&gNS5or zLjRTeuhM_D{%iDKtN%Lv*XtkR_8+(Zxc$fNKW_hV`;Xgy-2UVCAGiOw{m1P;ZvS!n z_wnD``uOkd;`Sf6|G53f?LTh+ar=+kf874#_8+(Zxc$fNKW_hV`;Xgy-2UVCAGiOw z{m1P;ZvS!nkK2FT{^Rx^xBs~P$L&9E|8e_|+kf2t$H$zEKM;Q-sCpU2KM|t6L=XspUu^hs_?8dfi z!rG7AC-6Jp@hR`{GEcLZS@biS4l*=RMIrZ6`e9zU#d$RsaV7;E!C>}aN48)Pk+}WG z?LTh+ar=+kf874#_8+(Zxc%!N)jy_xT>pgrN&Qp$r}fY1pVdF7e~bRD`VZB=P5*ZN zhw0y;f2aP#^&g>sm;T-Q_vk-T|55sn)_;utWAz`W|9Jf;=s!{aUj6&@@7I5l{*(2e zqW@I=r|Cak{~7wv)PI)#v-O{&|6Kj&=|5lp1^O@4f06!+^-1l*e@NJW!u}KXpRoUg{U_`{VgCvHPuPFL{uB0}u>XYpC+t6A{|Wo|_dmAx z_dj+>*nh(Q6ZW65|AhS~>_1`u3Hwjjf5QF~_Mfo-g#9P%KVkm~`%l<^!u}KXpRoUg z{U_`{VgCvHPuPFL{uB0}u>XYpC+t6A{|Wm~*nh(Q6ZW65|3p~!nrrYZk1>}ijAH~X zjC?Q8KVIv7DU|R4w{snrati-7e9T+C$dfE&2EB}A^1FGV z-I=0+3LfEZZsJNV;B=1XF!m>(?b(d=@483ePk!KY-s4rCVSqVICX%rKg#9P%KVkm~ z`%l<^!u}KXpRj-Zqx#46kL#b%KdFC8|Fr%Y{j>V#^l#C>RsW&-x9Q)m|1kYK^zYPv zxc(#b@6x|p{~rBE>OV^V(fW_kf2{uF^dGPP1pO!K->ZM0{{8w-(too4Q}myz|1|xl z>pw&PnflMtf42T}^q;H$JpJeEzd-+m`Y+OdvHnZ+U+_*|80$I=Cr6ZOin*WLxRy&e zo0B+-1KEq6*@_KW^^SW4e&K6A;!R#)DGONkc3zn7oJbFCB&nyIhq;Rzxq|aKjpI0! z{m5fGHf7!0?h*Kd@A-^(d4*-X@m5|~;+)MS#?VQYW|r%}LjRTeuhM_D{%iDKtN%Lv z*XtjW_Mf!>r2QxDKWYC-`%l_`(*Be7pS1s^{U_}|Y5z(4PuhRd{*(5fwEv|2C+$CJ z|4I8#+JDmillGsq|D^pV?LTS%N&8RQf71Sw_Mf!>r2QxDKWYC-`%l_`(*Be7pS1s^ z{U_}|Y5z(4PuhRd{*(5fwEv|2C+$CJ|4I8#hGh}gposgpm20?|vpA6>8N#0I#FlKp z%D3Dj@H1cWA#d>Mn|a}R=M&6l8WZSdC<*E)<00JxPX%;h!en!(lh9;^gEEyaB>gArKSlqk`cKn;y8bitpQ-;W{b%bx zNB_C{&(nXt{tNV9sQ)7U7wf-7|BGCMGb!K*2D1k{vIT=!@rHW@e&V06=Y=nwAMiTQ z@i_CC%6PhHB~C4+Jjfkf&t;s;DICMW?8B~X!^W(6{l7n#-?#mIzd66<6W-<}o?;O* z>0=bbNYh9qk8%$;a}^hI1}AVh2e4fK75cB#f0h2L^_27yDf>^^f6D$-_MfuMjdKV|>^{^!pA{^u?!`%l?_ z%KlUKpR)gy{ip0dW&bJrPuYLU{!{j!vj3F*r|dsv|0(-V*?-FZQ}&;-|CIfw>_27y zDf>^^f6D$-_MfuMjdKV|=^uxxkNU_27yDf>^^f6D$-_MfuMjdKV|>=NA-{C zAJ;#je^URH{%QR)`e*ge>EEJ%tNugvZ_~eB|6%%f=-;XTaQ#Q<-=%-I{yqAS)PI!z zqxB!7|5*LU=|5io3HndezgPc0{rmNwr2l07r|3Ub|7rS9*MEloGxeXP|7`u|=s#Eg zdHT=Se}VoB^3B#z=h zj(a&T?B(2Azb4HTtjBf1Up8_4lutW(TG1KW+bM`%l|{ z+Wyn_pSJ(B{ip3eZU1TePuqXm{?qoKw*R#Kr|my&|7rVA+ke{r{r&G<)ApaX|Fr$5 z?LTe*Y5Pyxzkfw_@3j4=?LTe*Y5Pyxf7<@j_Mf)@wEd^;KW+bM`%l|{+Wyn_pSJ(B z{ip3eZU1TePuqXm{?qoK4$EF~4VJNl*-T;#on&byLJ{|IE7x!_XL0$9dErFokqlu^ zc4A95VC9SM6Zo00_>ebvo+p^kG$zo^P!iNp#zWl64P4GGFXV;uoTqXuhp;cZu`Qdh z_67F|{LXiL$~(Nw(=28d{Y29CpSJ(B{ip3eZU1TePuqXm{?qoae^mdN{&D>i`X}{I z>7Uj=qkmTaoc=BPx9UGs|2F;G^&h5xhyI=V57&Q${$2Wa>)(^MfBi@4KU)7W`j6Fr zoc`nWpP>Il{d@KA)4yN;N%~LLe~SK7^`EBybp2=OKU4o%`p?#Xj{bA?pQrzP{TJxJ zQ2#~xFV=sF{-a%k4l*=RMIrZc3lBb@7p`_*#F-Ru1cTXw9od3Gta#pi0zdI3AMiTQ z@i_CC%6PhHB~C4+JV@npdEpM{^<2ieoWe02%s%YOHf+qA=iDdo8{hH?Z}SpQv51-U zF^XZNX{3_n`mfM`rT(k*U#_21w8T-%Jf5!eZ_Mfr;jQ#uk4|zWSLw?5oGxndc|BU@- z>_21w8T-%Jf5!eZ_Mfr;jQwZqKV$zH`_I^a#{M(*pRxap{b%eyWB(cZ&)9#){xkNU zvHy(yXTq}Bvw7iB*Wn&+<|;1a3{K#14q$h7U~>Y?pLLJGk9@)VyvDOU#$2W_juEsF zqy3q@P~$A&0dD6yF6A6f=4cLLZ+2m8He&TN?h*KvZ}^zEc#$Vr$P9WJNjqbg<%N{9 zfeIesZf@dAA{qPlC%iTOl&98vdh5Kmr`}t94et6HJ@YrI->iRB|Cs)9{S*2p^-t-a z)<2_vR{xy-E&8|WKUDuV{oC~)rhkY2o%#>ge}w*B`giN!qyI?#N9jLW|1tWH)qkA+ zF6|9t%y=)X|^ zMfxw+e~JDVxCWFS@pDg1b*RbKH^PYU?~fj&XT9{!bE2eZ6v9uoQJuK8@Yn> zIgR5ul>Jz){|fzA>c2|=)%vf|f35!O^k4tK_1k~e{*0KWqP4`_I~c*8Y9|m)(8-mp!ufpSAz2 z{b%hzYyVmM&)R?1{z~j+seelUwEh|Wv-;=s zZ_&S1|DpP~>EEvZF#S99@6>;|{v-77(!X2(9{oq^KT7}6`j63ntp4NlAFuxe{U_?* ztAC&V{rXSRf3p5l^q;E#H2tURKSTeS`p?pTw*GVUpR4~o{pahyK>vmMFVcUp{!8@# z-8J}*PkDzgpU4X@JD+ATv*>3u9b{;tibC$?7Ov(Z&ZK}N7|b5*$QBG@#S`uk_=zw1 z?eV%T((mHMyJf3^N=^k1w0I{nw{A9D7ev;Um^=j=ac|2g~5*?-RdbM~LJ|D65j z>_2D!Is4Dqf6o4M_Mfx=oc-tQKWG0r`_I{b&i-@upR@m*{pal8=YQJM=YQHOXa70- z&)I*@{&V)9v;Um^=j=ac|2g~5*?-RdbM~LJ|D65j>_2D!Is4Dqf6o4M_Mfx=oc-tQ zKj+rpHF%0e%=~|f?lL&eD`C^{8)n81Gc!8O%*@QpvBNRjlA6`b+-+t%=rH31C&^^O zFq3T6Zq=^Y-s}5u)%od~bL$zM$d*K%95Kf7G>>pMH*qBwa5~3v82hpdTeC515wKvM z&)e?%e>s2UJ3iw*US%FrX;Wg5en#*Z_j4Q9atUX15=U|%d$2v5vmUFm(cDn5WUhAt zfARxg@eyzGA~TsljiG(^-)H}Q_TOj!efHmH|9$q~Xa9Znum5oUN9aFN|55sn)_;ut zWAz`W|9JiT^zYYyK>x7*5&fh3$MlcupU^+4|DgUU{nPqq^v~*_(?73&LI0xuCH>3# zSM;yyU(>&?e?$MK{w@96`gip2>fh6Ug8mcrpQQg}{ioAzh675e)jCgWG?xBq_o@3;Sc`|r2^e*5pY|9<=LxBq_o z@3;Sc`|r2^e*5pY|9<=LxBq_o@3;Sc`|r2^e*5pY|9<=LxBq_o@3;Sc`|r1ZKmToe zKmToqe*5pY|9<=LxBq_o@3;Sc`|r2^e*5pY|9<=LxBq_o@3;Sc`|r2^e*5pY|9<=L zxBq_o@3;T{VE&!%;07+|JWk~p4qJIrSelW9^Q z!FZl!DED#;S91|(asop*Wo9VY-?0j2rqJLHY zn*MeD8~Qi(Z|UFGzoUOw|DOI6^q;8zB>gArKSlqk`cKn;y8bitpQ-;W{b%bxNB;|F zgo2~p!@=yuj%>*Wtj@9--bwtIpZF)A@HQ_qn@Kdt6K5RH@F@3iGgomT*G&%vXE=}N zaQ0(YwqX<2W+fI*_fFt9{>A6K&ucu#G&+S%3AF%%c`ya6X0s9}Y{{j0Su>S%3 zAF%%c`ya6X0s9}Y{{j0Su>S%3AF%%c`ya6X0s9}Y{{j0Su>S%3AF%%c`ya6X0sHs! zA9wWgA9otC{{j0Su>S%3AF%%c`ya6X0s9}Y{{j0Su>S%3AF%%c`ya6X0s9}Y{{j0S zu>S%3AMoS!-NE{-#?ootN&JT&`I?V;i&Js z`?3pLvoUKCuwbgMCGacX@fq*&D)X31n-YWcGlIt$GbI$<@4Ss`xrDPhi6c3XJ=mVj zS&vm&GQ}H#p#%0mVE+U5KVbg@_CH|%1NJ{){{!}~|8V_B=s!~bQTmV8e~kWP^&hAI zc>VkI@7I4o|FHfM{iFKF^pESG&_AjFp#CZS)B0!h&+4DkKd*m5|DygS{mc4S^snk) z)4#5NL;t4!E&bd2cl7V--_w7B{uA||r2l07r|3Ub|7rS9*MEloGxeXP|7`u|=>MlX z_<^tZh&OqWnM|NYmMCLLP7Vc6IUnXOZsZEi=QNJxQ1)SGwqhgJWW{7}1pek1zU3dh z%PY)f3N4BxsZI(7ea_(w<34WX8ZPE6PUHvFVaKWzVD`w!cH*#5)zAGZIn{fF&8 zZ2w{V58Hp({=@bkw*RpGhwVRX|6%(N+ke>p!}cGx|FHds?LTb)Vfzo;f7t&0{MViR z{MTK=_8+$Yu>FVaKWzVD`w!cH*#5)zAGZIn{fF&8Z2w{V58Hp({=@bkw*PQ2{{?q2 zgC12TPYeYaXN1u_$wS=94P4H7oXRmA!rtsehz(hTc4J#MWgS*#(FAV6>-~(RgdEV}Yg6YmK6^4fG zKWzVD`w!cH*#5)zAGZIn{fF&e|Ka+N(0`=OW5Z@%s1a->?6G{$c$i z`bYJT=^xiWp?^~ULH$$ur}fW-?O*?#{(1ci`WN*t>0j2rqJLHYn*MeD8~Qi(Z|UFG zzoUOw|DOI6^q;8zB>gArKSlqk`cKn;y8bitpQ-;W{b%bxNB^`t2s4T&c#u1|p369w zQ#hJ~*^3?7k_}j$Wj${M{>xANlTUb?&%2@EW#?=r(I8KpaXiDL+{4XW#f6-~@f^;6 z?8-K5!rH9F!mc+0zws|V=f_Scc;ERN&oPY-Wl{__1}v5&MtWf5iSH z_8+nTi2X_1}v5&MtWf5iSH_8$r6-|h~s<5JGyWRBt>_GAaP zV0~6&X~!FZ|L`OKs~rlyc7DuTyu>UfQYS}@u{_Nq+|5l~$pxIwaU90J?84S;%vuC2 zX#dZj<@0tc6#VM^j?Z|HSDD9D+LRcipAkI9{oKa2T*BF$#L$TSN9;dh{}KC-*nhVdjAEWsn|FZrS{j2)d^snpR(7&mFOaHe19sRrd_w=8j|3v*K z=|5TjDf&;$`VuKx=CgQ)#S?LTV& zQTvbDf7Je?_8+zXsQpLnKWhI``;Xdx)c&LPAGQCe{YULTYX4FDkJ^9K{-gFEwg0I7 zN9{jq|55vo+JDskqxK)Q|ET>(?LTV&QTvbDf7Jf{{P*4c{P#Vg_8+zXsQpLnKWhI` z`;Xdx)c&LPAGQCe{YULTYX4FDj|TI1YJ`Gy-NPy@Zg?m02mj_vKI9EvU))q;zy1UIhxL!>AJspme_a2B{z?4@^-t-a)<2_vR{xy- zdHoCe7xgdcU)H~(e^vjQ{&oEu`Zx7&>EG7BqkmWbp8gZ`pQ!&N{U_@`MgOV#Pt$+8 z{xkHSssAkfXX`&l|KHug_k6(zyw3AXr%Q!2VMg%;4{`_Ba~bDy3P*EBH544|+>0IA zk_}j$WmWG4{>xANlTUb?mzm8Z8sv#Hj%Rq3d$^gaxR5irv=R!AcOK4u?8-K5!rH9F z!iskSzws|V=Y3vdf&L5iU!?zH{g>#!RR3lAFV}yC{z1(CWA-1j|Cs&9>_2AzG5e3% zf6V@4_8+tVnEl7>KW6_i`;Xaw%>HBcAG80M{m1M-X8$q!kJ*3B{$utZv;Ua=$Lv35 z|1tZI*?-LbWA-1j|Cs&9>_2AzG5e3%zu*6`r{DjuSIqun_8+tVnEl7>KW6_i`;Xaw z%>HBcAG80M{l|j&&$)wXbSRTzfRQ}T1KiGaT*^)5P;id(WRBt>_GAaPV0~6&Y1uo0 z|L`MU^D%Gn60?{{og6X7@-&ZdH#c#ADHL4kynxd=j>FiOUD%q9S&M)LCGP}&3u`d9U@ z>0j5sp?_2Vmi}%1JNkF^@9955|B3of(too4Q}myz|1|xl>pw&PnflMtf42T}^zU~E zBY2Gad8!x+ZgXDCC7jJk9La&~!S-yoHK6byF`<31MX zzfk{0`Y+ahiT+FVU#9g|< z+kf2tp!4>SpSIr zQT=23$MsL>pVWU)|CIh|{WJP!_0Q>_*T0~DQU8+uW&JDqSM{&yU)R5(e^dXK{%!p` z`gis3=|4gLiTY2{f3p5l^q;E#H2tURKSTeS`p?pTw*GVUAL0)7XE(NGQ`TW+7G=GW z_?_?hf)99|=b6sSnNZMmR!9?O6i@IVcW^zIaW1EDGzYU6JF+DkusX{!-U$4cpZF)A z@HQ{=emWG)c21%}o;c%phDW)Fo4JY$IfLUloc-99ZP&# zT>lmN2MPO6*nh(Q6ZW65|AhS~>_1`u3Hwjjf5QF~_Mfo-g#9P%KVkm~`%l<^!u}KX zpRoUg{U_`{VgCvHPuPFL{uB0}u>XYpC+t6A{|Wm~*nh(Q6ZW65|AhS~>_1`u3Hwjj zf5QF~_V4#U?d$hH?U%6sg#9P%KVkm~`%l<^!u}KXp9to!?G9FAVcHvs-}o1w^FCjv zLcwd!=a@!^GARZa$>Ti0?OeyDoWsc+#X;=J4s5~ttj5xmHv<3RN51CQ!BFtA^DSOt z789wHBgR;s<`M4ZCa&ZHPUkodV_$Y*Yc^&r0u~H_1`u3Hwjj zf5QF~_OJhN{YU6OQvXrz~j+ssEt< zDgD#>XY|kNpVL3De?kAE{w4j(`d9R?>R;2pu75-Srv5Gc+xmC(@9N*ve}euK^`E5w zWc{b;KUM!}`cKz?hW<14pQZn7{paZaf0Ci#JNNJz@9`@0m`a-xgY+|k$GD%{xRy&e zo0B+_1KES^*_`!Ql_g1U1Xd(M!Jp0__==BslNXuE1Zrf7GKQykn7g=$FiIF>`% zhn?AqjaZWv37@z8dH>J(H^1;L|KMF-VS)Y&^r2QxDKWYC-`%l_` z(*Be7pS1s^{U_}|Y5z(4PuhRd{*(5fwEv|2C+$CJ|4I8#+JDmillGsq|D^pV?LTS% ze*fG4e*fD6N&8RQf71Sw_Mf!>r2Qv@`E%XD6j~HX(#LRyaUZvG4Ht73CvpS_ushqa z8S4^?hk{j{i{su2{K3EZk`H-<7nnhhDj6b-=1CsnPHy0G&f`>$;Sly_CqnEN3k4fG z*I;?fJAuFWnQ!=%cbLx{Cex%qf}u(KPuhRd{*(5fwEv|2C+$CJ|4IATf4Kf5^dG7J zDE&w4KSuwt`j69py#9Uq_v=5Pe^~#B{!#s7`p5N8=%3VoQ2&(vY5g-v``16Ge_sEB z{zd&u`j_>u=wH>prhi@khW<_cTl%;4@95vvzo-8M{U_=_N&m_EPtkv>{?qiIuKx`E zXX-yo|JnM_(SN)M5Tf#3O_FZh7h zd7kNXsgNejD4yU!?%;YZ<6KVRXb$H1NGRCLxg%S$0jskt;+?>M`H6q>32*ZVGgZ4jY|AY2FX#a!uKWP7h_CIL<`VZHCg#IJ- zAEp0j{m1A(R{wGOkJrCX|9<@k^bhMF(LbtxO#it43H_7$59*)NKdpa8|E&Hw{qy=4 z^e^gP(!Z>KMgOY)HT~=QH}r4n-_pOWe@FkW{yqIC=s!{aN%~LLe~SK7^`EBybp2=O zKU4o%`p?#Xj{b+agMHbBt=X8h2w2eXoy4zv$7j69tIT66ZAuK%&j=ples1I8zEE(j z^AgVHB#z`j_F#K9XFXPBNuPHDfARxg@eyzGA~TsljVw{d@DvX-e0(Ul%XuSLa6YGT zEQhiWJF^uVu|WTY`Y+OdvHnZ+U#kBy{g>;%LjNFT|0(-V*?-FZQ}&;-|CIfw>_27y zDf>^^f6D$-_MfuMjdKV|_27yDf>^^f6D$-_MfuMjdKV|5d4;)5p+%7-eGDfuE))!N-p8$6!^ND%i5$TJ z?9O&<#=5M+;&I*x{K3EZk`H-<7nnhhDj6aa#)g8?&L??@JGp_&Ige90hC|q!od~fZ zYp{H*Hv)h0GecAMpR)gy{ip0dW&bJrPuYLU{!{j^|8V_B=s!~bQTmV8e~kWP^&hAI zc>VkI@7I4o|FHfM{iFKF^pESG&_AjFp#CZS)B0!h&+4DkKd*m5|DygS{mc4S^snk) z)4#5NL;t4!E&bd2cl7V--_w7B{uA||r2l07r|3Ub|7rS9*MEloGxeXP|7`u|=>Ls7 z_>^~;&m1Pxq(FB}C`dTR^DINTms_}+i#U@L7{dPS#4kls5vu@h?8-eO}|^k)hx@=QKK$ zNio1k9_ImW=Q=Ls98Tsa4q{JsU<=k~HI|O_M&LjE$k%+#cOycKMgOY)HT~=QH}r4n-_pOW ze@FkW{yqIC=s!{aN%~LLe~SK7^`EBybp2=OKU4o%`p?#Xj{ala!P7j#-Q2{LT)^oZ z$6@TtE^N)ltVO_r5#9*=%6I%ZJQRH9e2-U|$5h&s7^I&OJjVUp#_21w8T-%Jf5!eZ_Mfr;jQwZq zKV$zH`_I^a#{M(*pRxap{b%eyWB(cZ&)9#){xkNUvHy(yXY4;?{~7zw*nh_UGxndc z|BU@->_21w8T-%Jf5!eZ_Mfr;jQwZqKV$zH`_I_F-~WDvJ2;=yIF>`%hn?AqjaZWv z&;HL{`@HSG|91YuxBP>5d4;)5p+%7-eGF$9_i-!Na4~0bB1dolyR#jeu`a8y;WMFN z@iX2D{K3EZk`H-<7nnhhDj6b-=1CsnPHy0G&f`>$;Sh#q>_21w8T-%Jf5!eZ_Mfr; zjQwZqU;p9ykI;Xl{-g9Ct^XMP$Lc>$|MB|w>EEyafc|0qBl<`6kLe%RKcRn8|3Upz z`lt2J=%3X;r+;4mg8oJQOZu1fujpUZzovg(|Azie{agCC_3!B4)xW3z1pO!KKS}?| z`cKh+s{YgTpRWH5{b%YwOaIyW&(VLwPlB;~yN8_!u_4<&9SYWPE`QoviNE-nZ}^mV zn9m$0)1*Lx@jS~=?&TJ)<|5AI1ctCbyRj{MJrxQzb*{t8EPBdYf#3O_FZh7hd7kNX zsgNejD4yU!?%;YZ<6KVRXbxsC4u3Kf?C9K*1^N%k2E*rNgAqe=!N_^JVAPO&FnV4- z7&D|0jGb2q#tkV3mG5hLnTwymAm3QVF8-DnV>WHHgov28kiHAUUrV z3=XLWsd@DvJ){w2<~4%skYP#)3=D)Tx)bx1d;&FcpB zA-$k6uNO3jObA-@CIsyv6NApYi9vVBq@Xu%QZQl203LCziI+(FJA03LCziI+(FJA03LCziI+(FJA03LCziI+(FJA z03LCziI+(FJA03LCziI+(FJA03 zK`wat@LVu|b$77rNpEHT%TN51Pk5V`nav~`eu_g3UT{K&9e@a$u`VEE&?V8j#tKj2CKAMjKz82xlE81qan82haL!}TAb|498u z=|5WkG5U|yf1Li~_3zWaU;hF9!}>?`kLn-OKdyg5|D^td`ls|y>z~m-tA9@ay#59K zi~5)JFY8~?zp8&t|GNGS{hRu?^l$6m(Z8#IPyY$}Pt<>s{*(2eqW@I=r|Cak{~7wv z)PI)#v-O{&|6KjQb_XBx7B4Z2iPXsvV=Pbe2zPT6S8@T@J{Ag2cOJ)K?8`1}&Bm-n zz=FrT75SC#_>A{>m3d61O^HGJ8Np-R&uv`GUBg1bCC;-si6c3XJ=mVjS&vm&GR#|% zKly>L_=q=ok(n&if06!+^i`X}`t)IX(vTK|mxS^abR=k+h>U(~;(e_8*E{#E^J`q%Yu z=-<@8rGH!hj{aT!d-_k%f1>`A^q;K%6#b{_KTZGX`p?jRrv9_^pRNBK{paeRcq9}& z=^h^9PHy0G&f`>$;Sly_Cqit<8Z3Xr8a2f2gmS*ZUa z{TJ)MME|AwFVlay{wwqkya87#*nh$P3-({I|APG&?7v|D1^X}9f5H9>_Fu67g8dil zzhM6b`!Cpk!Tt;OU$Fmz{TJ-NVE+aCFW7&<{tNbBu>XSn7wo@a{{{Om*nh$P3-({I z|APG&?7v|D1^X}9f5H9>_Fu67g8dilzhM6b`!Cpk!Tt;OU$Fmz{TJ-N5X`^K9h}Q4 z9L>S(#g1&r2CUAqhrAK^FF)~5KH+U%W;T;}?!i#daOR0Kj%Rq3d$^gaxR5hAp2OLX zUD<|BSeunt_@Flezws|V=Y3w|Io^686ijn=D3fApw>SvHFkGf4u&E`uFQUpnq8Zi2hOi zWBSMSPw1c2e^CFF{%QR)`e*ge>7UoXpnp;SlKy4=EBaUUujyaczoCCq|Cau3{X6=1 z_3!CFLH~*RPtt#~{!{dys{b_or|UmM|C##F(to!8bM&99|DNt(2ex2+R%7V{-bnn1 zANiV(d5h2P4+SqdXEBjFIbw|EX&&KjZsJNV;B=1TF!p5^wq|42B4EM&-U$54cYMYV z_l1J@oUbyEskA9ENIxTZjQhEbYq^B8If)}VkUiL*%~_9CS*ZUa{TJ)MME|AwFVlay z{wwqkiuUin0ay0lfU6Ykzi9tO`!Cvm(f*6}U$pf6@Mn_FuIBqWu@`zi9tO`!Cvm(f*6} zU$pvpt{=EO~{DXfptZ4s5`!Cvm(f*6} zU$pOW5Z@%s1a->?6G{$c$i`bYJT=^xiWp?^~U zLH$$ur}fY1pVdF7e_sEB{zd&u`j_>u=wH>prhi@khW<_cTl%;4@95vvzo-8M{U_=_ zN&m_EPtkv>{?qiIuKx`EXX-yo|JnM_(SNS~U%G=2d4m_2L60gKB8=uq9^y`J;BwC6 zRF2^g_GTwSY{(jHdUq&Tez$i5fAKTl@G0*wpE*pXNr438d6uEv%Pm~ZMV!eA3}JtE zV_P<5$GbwoI?k0@beDGmzw%T<*rTQ<^f4TlE^bbn*U$Xy_ z{reiws=fxaTFL%P_FuC9lKq$LzhwU<`!Csl$^J|BU$Xy_{g>>&Wd9}mFWG;|{!8{> zvj39(m+Ze}|0Vk`*?-CYOZH!~|C0Te?7w9HCHpVgf64w!_FuC9lKq$LzhwU<`!Csl z$^J|BU$Xy_{g>>&Wd9}mFWG;|{!8{>3g&m+L4`D7M)3p>atGIQ8Rv2eM{_WHu_OE4 z849*^Zouj+yVE;?|MC<6>&Wd9}mFWG;|{`DWO{|Nm@ z>OV^V(fW_kf2{uF^dGN(pZ@*&59lA(KcatB|Cs)9{S*2p^&iwfrGHxgjQ&~ubNc7? zFX&&?zodUz|BC)q{cHNy^>66k)W4;FTmO#!UHyCdPtbp&{*&~dtp61Kr|LgV|LOYA z(0``>v-F>>{~Z12>i@Vqc!1lvj!QX*lR1jhZx00rIrn4-wqSi$W9jYQ3H*m2`I?V; zimh zro$`VuKx=CgR=dX?Z0gQW&1DNzpnwW?rXqn zl^(Z2x8ZFWZ0F{>%1Xw*RvIm+il7|7H6x+ke^q%l2Qk|FZp;?Z0gQW&1DN zf7$-a_FuODvi+BX`8VDg3eI*9CvhYPvIpC`%hn?AqjaZWvw|FP;H^1;L|KMF-VJ=f>Q6xzp!x_eX zJb7~{xYc@u|Ka+N(0`=OW5Z@%s1a->?6G{$c$i`bYJT=^xiWp?^~ULH$$ur}fY1pVdF7e_sEB{zd&u`j_>u z=wH>prhi@khW<_cTl%;4@95vvzo-8M{U_=_N&m_EPtkv>{?qiIuKx`EXX-yo|JnM_ z(SNS~ySsz!*o<{qg~d1fS_*&gZ@%P1-rxmh(4$I*2%~wD@i&Enhn#nE1DA6ir*aI3 zus1sqVnfzo`Ayyk{Ke0F!>7E%eC9BjCIu3VCw*fmc-A?Td%1Azh675WDi`>)u4#r`YyU$Os+{a5VY-vO=Z?|{~-*nh?T zEB0Tp|BC%r?7w3F75lH)f5rYQ_Fu98iv3sYzheIt`>)u4#r`YyU$Os+{a5V2V*eHU zuh@UZ{wwxhvHyzwSM0xH{}ubM*nh?TEB0Tp|BC%r?7w3F75lH)f5rYQ_Fu98iv3sY zzY@$}bfY&CzwN48`GR%h7_ z-U$4cpZF)A@HQ_qn@Kd7c6}(wJL8Pw86M>xZssa3SRVkI@7I4o z|FHfM{iFKF^pESG&_AjFp#CZS)B0!h&+4DkKd*m5|DygS{mc4S^snk))4#5NL;t4! zE&bd2cl7V--_w7B{uA||r2l07r|3Ub|7rS9*MEloGxeXP|7`u|=s#Eg_uav3JjXO% zx-JxSoMloBFp|f4fZMr_OF4&=If{eWlO5QC^;wOj*LfrGAAaO(KISc6;=OA_!7S%Q z>g0$qmZy1yySa%gxq#C-j>FiOUD%q9S&M)L*LoxHE8p=M@A1_&q2N{LJf^Zx|3&&Q z)_;lqOZ8u-|8o6T=pR(=ziR(g`>)!6)&8sYU$y_L{a5YZ-vO`f?||2-+JDvltM*^D z|Em30?Z0aORr{~nf7Sl0_FuLCs{L2(ziR(g`>)!6)&8sYU$y_L{a5Y3YX4RHuiAgr z{;T$1wg0O9SM9%Q|5f|1+JDvltM*^D|Em30?Z0aORr{~nf7Sl0_FuLCYB0a;4oVEt z&j=ples1GhF5zrW;z$l;54LA>)?-zcT;q+vpZvgA{Bm_D_{jMtFEWz})W{NL3{UYe zcX1L1fT zu75)Rr2d2Yr}R(jpV2?7e@_3r{ssMu`j_-C>tE5os((%Yy8aFQoBFr(Z|mRDzpH;w z{|Wj})PIuxll7mX|5W{_=|5fn8T!xEf0q8U^`E2vT>Xc+gZsFZYq*%RIFTbbfZf@S z%~+RJSbWw0+_lf!SB8Q=od4!aKI9EvU4A&xBYql*ZCJe^9`T!4)dAAWSSI6FrH@_%Dvpe)m+3v{TJ!KSpOyZFV%mU{>$}W zp?^@b|C;^R?7wFJHT$pGf6e}D_FuFAn*G=8-@gG_*S`T-uV()>`>)x5&HiilU$g(3 z{nzZjX8$$&ui1ai{%iJMv;Ug?*X+M$|26xs*?-OcYxZBW|C;^R?7wFJHT$pGf6e}D z_FuFAn*G=8zh?h6`>)x5&HiilU$g(3{nzZjX8$$&uLbkZbO$Feg#Fo#ZP}D{*z$@{ zu(ET}72XN_&i8!52fWVnOs7kQG+{>Z1P^it*K--?atcRtFnh5hTe9orpMXn5 zJAwc56aVBB-sWXyGl>Ry;*8@N9_1cx<|;1a436h;_G4Fu)$G4!|26xs*?-OcYxZBW z|C;^lKV1J2`j6Cql>VdjAEWsn|FZrS{j2)d^snpR(7&mFOaHe19sRrd_w=8j|3v*K=|5Tj zDf&;pvywRHtt~))@CIZUgn*|Z~TkTd7syKj%jo# zlVX68JkA5$&UIYMIh@Q<9K>;#hJrnvJFo@ovl>e;^-kbF{K(gQ%v-#~EGAMXM~tyN z%_H2+O#!RR3lAFV}yC{z2XT>-Jx_ z|GNFx?Z0mSb^EW|f8GA;_FuREy8YMf-@gG{-@gIdpl<(l`>)%7-Tv$LU$_6d{nzck zZvS=ruiJm!{_FN%xBt5R*X_S<|8@JX+kf5u>-Jx_|GNFx?Z0mSb^EW|f8GA;_FuRE zy8YMfzi$6^`>)%7-Tv$LU$_6d{nzck9?V~GiFXpe@*SV?9`z*l_4o4m+OCQu_wlrcQT!`#J)%7-Tv$LU$=k#hwDE= z|B?ES(tou6WAq=Z|2X}}>))q;zy1UIhxL!>AJspme_a2B{z?4@^-t-a)<2_vR{xy- zdHoCe7xgdcU)H~(e^vjQ{&oEu`Zx7&>EG7BqkmWbp8gZ`pQ!&N{U_@`MgOV#Pt$+8 z{xkHSssAkfXX`&l|GE0V>keLFE>mbxBuO8`8OD9w%0m~1f@_=?a~3CZ1P8D?+p!tz zvI>hY^iJRp{>_(s$Q!)C40=?_5MeY=@(|Bn5DM;e-oWLY$Eh5{A?(dggxHWZSbl-8 zCGZzN^9`T!4)dAAWST70f06!+^XerH|)P* z{|)XerH|)P*{|)2#@(CQSakP%z5*1P^it*K--?atcRtFnh5hTe1PGv+O)?1pdoU{F6_3 zo0pl*BpT%DoEr+_&T%}$u!j9N?7w0E4f}7{f5ZM8_TR97{fFy6LjRHakJ5j%{$unX ztN%Ft$Lrsxf4}|%`iJ$8=pWTTrhi=jg#JnW2lY?spVmL4e^&pT{(1ci`WN*t>0j2r zqJLHYn*MeD8~Qi(Z|UFGzoUOw|DOI6^q;8zB>gArKSlqk`cKn;y8bitpQ-;W{b%bx zNB_C{Kk5$d;byMlLeAiL4rf1hWg9kOZB}C8x!wr;#=rQS_j!%ym_~Nknn$>s zo4Aq-Sg8LZ{TJ)MME|AwFVlay{wwqkn)ctc|EB#n?Z0XNP5W=!f7AY(_TRMsru{eV zziIzX`)}HR)Bcpw>SvHFkGf4u&E`uFQU zpnq8Zi2hOiWBSMSPw1c2e^CFF{%QR)`e*ge>7UoXpnp;SlKy4=EBaUUujyaczoCCq z|Cau3{X6=1_3!CFLH~*RPtt#~{!{dys{b_or|UmM|C##F(to!8bM&99|5ol`Bi3Za znchhJ%`be*A7_Mue>mUe73MO97DbZuF`QxC$E{q$#hk^79KiwX&US3Zx~#(DGrSS_ zga3PaDEPPYOFrZcUSI}2s$_^TnkRXPJGp_&Ige90hC|q!od~fZYq0$E|M|1*U;jn= zFV=sF{!8^=rvGyNSLh$K?7wCIE&FfTf6M+`_TRGqmi@Qvzh(a|`)}EQ%l=#T-?IOf z{kQDDW&bVvZ`ps#{#*9nvj3L-x9q=V|1JA(*?-IaTlU|w|Car??7wCIE&FfTf6M+` z_TRGqmi@Qvzh(a|`)}EQ%l=#T-?IOf{kQDDW&bVvZ`ps#{#*9nvj0{ve`WXmmwWh` zZ}^mVn9m$0)1*Lx@jS~=?&TJ)<|5AI1ctCbyRj{svJNY=!D*pj(P`cZ{Lc4$!3Vs~ z^Gv5pg*0JC@dOWY2iJ2M=W+^1b1-|cBU`co+ngE-R(CEt)jNUz@)Q5$6Na_yzh(a| z`)}EQ%l=#T-?IOf{p&wm{}K9+)PI!zqxB!7|5*LU=|5ioKK=XkAJ9Lne?OZJ|O8>O}8U3^R=k(9(U(mm(e@Xwc{uTYJ`q%WY>)+77seeoVw*DRcyZZO^ zpP>Il{U_-^S^p{ePt|{#{?qlJq5n+%XX!s%|2g{4)&FgG@G`TRM1wqW#__$8$LQu`AoK=P99J6X)8j#KKd&6ZnmP@j37F8qYC}4rNjdFp|f4fZMr_OF4&= zIf{eWlfzC91v@ymV0~6&>B-&+{D&X;nvZ#lmzc#w>MYcMk^YPIU!wm~{g>&#T>lmN z2W|Ur+ke~s+xFkK|F-?N?Z0jRZToNAf7|}s_TRSuw*9y5zit0*`)}KS+y2}3-?o3> z1Gc&E0o$T&|84tk+ke~s+xFkK|F-?N?Z0jRZToNAf7|}s_TRSuw*9y5zit0*`)}KS z+y2}3-?sm@{kQGEZU1fiZ`*&{{@eE7w*R*Mx9z{}M<}|37-M;wN4T4txRMJvo#Qx+ zlTHc+`#N`FYc^&r0v4R)oxrbr$7j69tIT66ZAuK%&j=ples1GhF5zrW;`|ds!I91b z*@Nxbob_0hB`10(@Fzd;6(8{?FEWz})W{NL3{UYe!`k-Ww*R*Mx9z`e|84tk+ke~s z^&hVP2>nOuKT7}6`j63ntp4NlAFqF({{8w7=pWWUqJLEXnErA76Z$9hAJjjke_H>H z{#pHV`sej8=wH;oq<>leivCsoYx>vqZ|L9Dzoma$|Bn7${d@XP(0`)-lk}gg{}lbF z>OW2Y>H5#mf2RJk^q;N&9R26&f0sMBkt;Z#YfcCSr#X-1Q1)SGwqhgJWW@>I3H;43 ze9J$0msgm}6j~HX(#LRyaUZvG4R;>@7RCG{yX;HvHydl2&CASY5)JaiDIXmQ#yOwiQSRYpuHr(@ z;CK#aKXzpsHeqd6V&T!=2>iys_?-87jpvv~hcXk73I!?W03&&v2e_T5|6=`@=)Y9|W%@7Ie}(=**Z#Zq-?jg){deuZYyVyQ@7jOY z{=4?ywg0aDckRDx|6Tj<+JD#nyY}C;|E~Ra?Z0dPUHk9af7kwf5BOHT2YlA{>m3h2*L@1c*Y*S*8en#*Z_j4Q9atUX15=U|%d$2v5vmUFm z;zhD0W{lof4^pENv(?70%LjR=xgZiiRPwSu2KdXOE|GfSM{fqjS^e^jQ(Z8yH zP5-+74gH(?xAbr8-_gITe^37j`cKqLDIVr7ZsZEi=QNJxQ1)SGwqhgJWW^Bg1pek1zU7a@ zeLcbXF0U|`DYPh(q>teY<34WX8ZPE6PUHv@7aIP{(JV{v;Us`_w2uC|2_Nf*?-Ued-mV6e?J3a8$SbL+n)XR?7wIK zJ^Sz3f6xAV_TRJrp8faizi0nF`|sI*&;EP%-?RUo{rBv@Xa7C>@7aIP{(JV{v;Us` z_w2tH%&)qG3=u~2BoA>XH*h)UaVp1f2z#>=AvRgJq1%BsyzTg91=Xs{nr9zr8 zqj-X0J^Sz3f6xAV_TRJrp8faizi0pY57&Q${v-7trT=LC$LK#+|8e?{*S}Bye*FjZ z59=S%KdOIB|G54M{ge6+>Yvg-t$#-Uto}Lu^ZFO`FX~^?zpQ^n|Em5q{p%T$&jrwoWf3yBu^xvxgHvNN;{fF#7Wd9-i57~dn{zLX3vj33%hwMLO{~`Mi*?-9X zL-rrC|B(HM>_24xA^Q*6f5`qr_8+qUko|}3KV<(Q`w!W_p8<1(p8<1Z$o@n2AF}_D z{fF#7Wd9-i57~dn{zLX3vj33%hwMLO{~`Mi*?-9XL-rrC|B(HM>_24xA^Q*6e<-M4 z;~8AcS)9muXZfDu?8M&e#OAZymH3k%_?%_5Q6WQ^nM`0f{rH4;c$ueokUP17%Q=s$ z&-6XP*@Z*dpWO)f_e^&Me&K6Yv5-az#F@(!Ml*<>ywB@A$D`cKEnLkVXZW7rJd>_; z57~dn{zLX3vj33%hwMLO{~`O=zlZ)k_3x#BZ~gn|-&g;B`uEp=fc^vZAEf_a{fFp3 zRR3Z657&Q${v-7trT=LC$LK#+|8e?{*MEZk6ZM~@|788A=s#8eY5Gsse}?`u^`E8x zZ2jlxKUe>G`q%0|U;mK)Vf`ceNA-{CAJ;#je^URH{%QR)`e*ge>7UpCNYCJ4_F_ji zo#C#;AAHX`meNX@G$Cd%o?-OmW8UT^p5y`U;E~gPPjFtwxtzkW9KwF=%C^(p6ZnUp z`HGb+pn*Iw<}jI245SC$d5vdzgcncqJ;8Z1S8*X{Z~{kg5PPx%8&9);{Ws{pQU6W) zZ`OZ{{#*6mrhgE&|FHds?LTb)Vfzo;f7t%R_8+$Yu>FVaKWzVD`w!cH*#5)zAGZIn z{fF&8Z2w{V58Hp({=@bkw*RpGhwVRX|6%(N+ke>p{S2t1{0yk0!}cGx|FHds?LTb) zVfzo;f7t%R_8+$Yu>FVaKWzVD`w!cH*i^#yAGZIn{fF&8Z2w{V4+qu%@(h0GJJzy< z7D}X;&veEylsp!}cGxfBk#t-&6ly`uEnqkN$o2@27u%{RikjQ2#;t57vK({zLU2rvGsLN9aFN z|55sn)_;utWAz`W|9Jf;=s!{aN%~LLe~SK7^`EBybp2=OKU4o%`p?#Xj{bA?pQnGV z{`2(@=^xfVqJLEXnErA76Z$9hPwAi5KcjzE|D67L{hK|5I+D~fjj;@&HzQ8=J;nJZ zFYq|sxQ%PMgtIw`qp4vZc4o`T?g;$Fk9@&$+Nmc?gjq~v1XEA)J;C`Y@A3*y^ALA& zBUf-fr*RyIaR9rs9qUhWN8ne!VKs|rqDX>yOl7_P8}#3(|0ex6>%T?+t@>}%KZw|W z#Qr1pAF=<4{YUISV*e5QkJx|2{v-AuvHytuN9;dh{}KC-*nh_1}v z5&MtWf5iSH_8+nTi2X&*_oMp68Aw!r#SKkwy6BtfEKH(i+<|!WJPHy0G&f`?Na47q; z8v*}zbw}VAzGf8*X{12w3BD&d=Q4%S45BCR(>-GU5&MtWf5iSH_8+nTi2XyvDOU!adx~di^)(zfu29`ft{Mi~d{n-==>Mwg0I7N9{jq|55vo z+JDskqxK)Q|ET>(?LTV&QTvbDf7Je?_8+zXsQpLnKWhI``;Xdx)c&LPAGQCe{YULT zYX4FDkJ^9K{-gFEwg0I7NA2Iwfb8ODKpq#h|ET>(z1mUxkJ^9K{-gFEwg0I7N9{jq z|55vo+JDskqxK)Q|ET>(?LQh+uks8osZ0F!7=a;OYgDN?q%w`fJ z8Ng?}$E!TU!`#hHT*(ET&hZ>h_o)3x?LTV&QTvbDf7Je?_8+x>{d?%&Q~zH2_tw9U z{(bfDr+)_;ipL-ik~|8V_B=s!~bQTmV8e~kWP^&hAIc>O2nKT-cl z`cKw>ivCmepQitG{b%SuQ~z1|&(?pA{&V%8r+=;f^YstuAJ#vje^mdN{&D>i`X}{I z>7Uj=qkmTaoc?+J5A+Q7V0$(k>(6b^`#+t(@hxjuOfz*Psbv~t8A5M9wjAT0z+e2x7c8fpda^{A#Y9HXpHF$0S9qF-xQiRPg7Z0z z<2Z~1IO^!m!S2rOSbsG7Z_t0E{+smQtp67Mx9Y!5{~%`nG5e3%f6V@4_8+tVnEl7> zKW6_i`;Xaw%>HBcAG80M{m1M-X8$q!kJ*3B{$utZv;Ua=$Lv35|1tZI*?-LbWA-1j z|Cs&9>_2AzG5e3%f6V@4_U~uF9`9$so)EMDnEl7>KW6_i`;Xaw%>HBcAG80M{m1M- zX8$q!kJ*3B{$utZ3#$L&8T`sOtY#5S6iG0Tsf=MTz4(APc%H|&k6XEhi#dxEIf_${ z>Kt@(?#)hYKFU3TKly>rSw_))9N4h8Q3tzK}g>;YEf6V@4_8+tVnEl7>KW6_i``5pR{yp{YrGIbz`{>_S|9<-S z*METi1N9%I|6u)x=s#5dVfqi(e}w)c^&h4GX#L0NKUV*7`j6Ltg8mcrpQQg}{ioOWuqkp5x)Bl<`6kLe%RKcRn8|CIh|{WJP! z_0Q>_*T2y-C=h2ZQy9%4dh$N6^Bj+IFSl?t7jgX&or5!-T{)72*^3?7bcA~XfABr) zSV}8p(uA17c!trJk9nJyc#;RWgX_8H@XoyKV*p+REyC?7uKl2qUSwI7M zV$5MO>-FED|3>{c>AzY3E&6ZOf1Cb6-2UVCAGiOw{m1P;ZvS!nkK2FT{^Rx^xBs~P z$L&9E|8e_|+kf2tOZJ?PGBJj)~8!xM*f4sLc{#f6-~2^_&e?8y#nJj^|T-}#QUETM%GDdsbs zaSWvoAMqA1@&vCQ+Bvx2c{|r}Dd%u9$IzL5*@dl#x+m~AKk+3i=%7lDD6^TwNCxm3 z@9`?#pVU94e_H>H{#pHV`selk@Q}{I zGoHi4+|5l~$pxIw@f^;9?7{YIIK;OUe&bu#u$X4*NK(r*#xjK7d`SP!or5=>FYq|s zxQ%PMgtIw`qp4vZc4kXwcLe_8N4{V=?bMSc!Yn2-g8q!D=^T9Oe3w^vnuoZH8(FXa z2K_hcze)ei`ft&HtNz>c4-)pDu>XYpC+t6A{|Wm~*nh(Q6ZW65|AhS~>_1`u3Hwjj zf5QF~_Mfo-g#9P%KVkm~`%l<^!u}KXpRoUg{U_`{VgCvHPuPFL{uB0}u>XYpC+t6A z{|Wm~*nh(Q6ZY?Cz@Ox2z@MD3|AhS~>_1`u3Hwjjf5QF~_Mfo-g#9P%KVkogpn8R8 za6YGT9EWiLyR#kZYkW)LSH592i)f-qf_Y433^O}*4hB1W@d0n}Jdbf7w{i^^a~3CZ z6rI?co!H#T9f3djfzMe+8x=BynMwTM&cOudaQg8H@9;8D@gR3{1DA6ir_zN(>7KCv zg#9P%KVkm~`%l<^!u}KXuYV8yd+Ogy|K9rd(Z8?${q*mz{{a05>OV;T!TJx;f2jV$ z^dGMO2>nOuKT7}6`j63ntp4NlAFuxe{U_=_N&m_EPtkv>{?qiIuKx`EXX-yo|JnM_ z(SNS~^YpLPf4=@9{lof4^pENv(?70%LjR=xDgD#>XY|kNpVL3D|NfrAZUp>$usagJ z@HMMgNFxQ}ln?40%ymv-G=u2L`@GI`Jj%V?!qr^FnRMky4rVWQWYaikKtYayy zlv#OT=OFD2F@y08qc0!xHZSoc4{!(9a~bEd;+*4yQ=G?g2>Y=s+YWS3V7>ku^xvre zCjB?-zeWG8`ft-eNZNnW{*(5fwEv|2C+$CJ|4I8#+JDmillGsq|D^pV?LTS%N&8RQ zf71Sw_Mf!>r2Qv7zNGyp?LTS%N&8RQf71Sw_Mf!>r2QxDKWYC-`%l_`(*Be7pS1s^ z{U_}|Y5z(4PujoV0db1o0dZ>5{*(5fwEv|2C+$CJ|4I8#+JDmillGqss{eQfKl2qU z`R)MUQ=ARti7|)CjA9@?=+0|A%Ol*w&0NKWoWThk!9ncF4s1NYJ%Qi(j=%T!J;Awz z7D}X;&veEylspw;RsrpaTf4crN^q;B!Ed6KeKS%$$ z`p?t9R{#0>hx8BYAJIRme@y?l{t5k)`ls|y>z~m-tA9@ay#5`YL6sa)W;2PA4B#`~ z<5iyFVeaN8uH*tv=Xeh1K=xpJHtgrmZqNHaoxkxdYgkM(btI`}8eM^nQ-?92iC`kt__y8?glBVVwbcIwFzVHWH4-=P0S{Ws~qS^q8iZ`FUB z{z1zAQ}&;-|CIfw>_27yDf>^^f6D$-_MfuMjdKV|_27yDf>^^f6D$-_Mfu< zl>Mjd-|v7q&F_FYJ!StX`%l?_%KlUKpR)gy{ip0d6;vmB1|#Utr@YH6Jk3Mg#f@CS z`JBda9L510wU6&9&h1#gkGlfD@(rt5L=#04%wsBJ7)&od;0>PVG4A75uHj_27y z`uEVkr~bY4@2!6y{rl?QPyhb<572+0{)6-%tp5=Ghw48}|Ka+N(0`=OW5Z@%m5Df1>`A^q;K%6#b{_KTZGX`p?jRrv9_^pRNBK{padGPybr|=j$KRKdgU5 z|ET^k{p0#4^iS%a(m$<#M*pn-IsNnczw8-2#e>|*4P4H7oXSOe`JUoDl>OO_fPeRL zSKt@EW)%x*q(GdxOkp&G=*j!M&T~A3=fgYQ|# zQd%jKCd3TJGmO4`%-g)glRUs3T+e#_H|W1n|4sUD)_;rsTlL?je~`BSwEd^;KW+bM z`%l|{+Wyn_pSJ(B{ip3eZU1TibJO;pw*R#Kr|my&|7rVA+ke{r)ApaX|Fr$5?LTe* zY5Pyxf7<@j_Mf)@wEd^;KW+bM`%l|{+Wyn_pSJ(B{ip3eZU1TePuqXm{?qoKwtv3^ z>I}aF>ddtLr|my&|7rVA+ke{r(?Ru~J$z5`9M0twj^z;cV^_BA;hw}l{LELZWC0E2 zi7|)CjA9@?=+0|A%Ol*w6TADK;Jk_pIfD~8f`izT9oV?Ldjh}n9cx)a3nfy_XFB5; zN*_MrEnegaUfs?21n2Es$EBRZ$s9xXwEd^;KW+bM`%l|{+Wyn_pSFMfd+6U&|6cm{ z*1wPbef96Be}DZ4=s!^ZLHZBYe~A7=^&h7HaQ#QF6f35!W^$+PE)<2?uRR5U%as3ne zC-qP1pVmL4e^&pT{(1d7dj|Wm3tM+{PvUQW;!9T0L6sa)W;2PA4B#`~<5fP~)%OJF z!`#hHT*(ET&hZ@1f$YKdY}nQJ1b*XN*07jn>PS+{G{!Q7-h4>^U3^b)zQE&j<2J74 z63*r%j;4lv*qJT6xFfJ${|)+Y)PIxyoAuwK|5p9C=^te5KV$zH`_I^a#{M(*pRxap z{b%eyWB(cZ&)9#){xkNUvHy(yXY4;?{~7zw*nh_UGxndc|BU@->_21w8T-%Jf5!eZ z_Mfr;jQwZqKV$zH`_I^a#{M(*pRxap{b%eyWB(cZ&)9#){xkNUvHy(yXYAkafIG|Y zfIB;5{~7zw*nh_UGePw)&)`SCU^(s7lO@6|CNhHljM>@u6z99V!qYs&UEIhOoX=?- z$6*}6?rg{Uo!t@mm2X(hBAO_YU>;K$!_1w0PjL3)1K!|y9^*c4aKUDu=`VZHCg#IJ-AEp0j{m1A(R{wGOkJo>K{uA||r2l07r|3Ub z|7rS9*MEloGxeXP|7`u|=s#EgdHUDtKVScl{$c$i`bYJT=^xiWp?^~Ul>TY`Gx}%s z&*`7nzv3BW2s4xTj=rZjhtrQwc!!sHiU+xq8@QbFIF&9O%Kq#|z`r}XBk&7fvx%T$&jrwoWf3yBu^xvxgHvNOF{b%hzYyVk)ds+L>+JDymv-Y30|E&FI?LTY( zS^Ll0f7br9_Mf%?to>*0KWqP4`_I~c*8a2hpSAz2{b%hzYyVmM&)R?1{*0-|v7t$M1kVH*5b{ z`_Bf|@t(mj`tmVv^Ab<;0C#XbmvJtqa4d(gAG@+`dv^r>;b*>LB@0-)UFV>|nJ2~^ zCNqkG^q@Ph@hp#U4>xla7jgzCa0CajCp)llJ9h+r=R4N&Q_wkB;%uQriup`u97E~D zN4!P%to>*0KWqP4`_I~c*8a2hpS6Ged+6U&|6cm{*1wPbef96Be}DZ4=s!^ZLHZBY ze~A7=^&h7HaQ#QF6f35!W^$+PE)<2?uRR5U%as3neC-qP1pVmL4e^&pT{(1dh^bDTh zes1SFF6A6f<`_D&FT1cca7W;8e&Rp3)dXKUSI|L~98qR7iIEK8Gv4D>p5bBc<|eM> z0#4_64(CAjV0$)f>*BA~CD^jHCiuKlm46a-=hCk{kQ4we@y@Fa`vCI|D65j>_2D!Is4Dqf6o4M_Mfx=oc-tQKWG0r z`_I{b&i-@upR@m*{pajIXa70-&)I*@{&V)9v;Um^=j=ac|2g~5*?-RdbM~LJ|D65j z>_2D!Is4Dqf6o4M_Mfx=oc-tQKWG0r`_I{b&i-@upR@m*{pal8?|?ne?|?l&7gR6t z49?~xj;4lv*qJR`y9B#?-v8tLiy!%d<+M{zmI$+$$O!uLDev+MPxBCWaU)l7KBsXU zhj9SA(`idhu$^=LmM+16@GIZ2nng5GB*8qUGKRtQ;sf5`c^>0FZsi&-<}6O+C_2$S zXa70-&)I*@{&V)9v;Um^=j>nq9{TsxznA{K_3xv9U;X>(-(UX$`VZ89kp6@9AEN(I z{fFs4T>laJkJNvZ{-gCDqyJd_$LT*_{|Wj})PIuxll7mX|5W{_=|5fn8T!xEf0q8U z^`E2vT>apgrN&Qp$r}fY1pVdF7e_sDCn`?r-J%^px zytzy8-~7oBe9ki3sE{GdOeQd#etg0^yv$QP$erB4<($WZgr z{ujUSHLF-iBL(8jWeTGiL{Hx5b)MrK|IK>+ zH|W1n|4sUD)_;rsTlL?je~`ETy#43xKX3ne`_J2d-v0CUpSSxoF`kLS>=Y^cX2^_&e?8y#nT;C=5FMj7c*0O{ay65db zZ~uAw&)a|A{`2;qxBtBT>)%8Fp8EIFzqkH<^zW;GKmGgbKS2M1`VZ27u>M2zAFBT_ z{fFy6LjRHakJ5j%{$unXtN%Ft$Ll{q|B3of(too4Q}myz|1|xl>pw&PnflMtf42T} z^q;H$JpF6+pRa#N|FHfM{iFKF^pESG&_AhvO8>O}8U3^R=k(9(U-Ar6%x5~|7)l>L z;w@g}3GU~ae`|uZ+y!d7Sl`}NotwKSk~w5U;mBzZ__Fu67g8dilzhM6b`!Cpk!Tt;OU$Fmz{TJ-N zVE+aCFW7&<{tNbBu>XSn7wo@a{{{Om*nh$P3-({I|APG&?7v|D1^X}9f5H9>_Fu67 zg8dilzhM6b`!Cpk!Tt;OU$Fmz{TJ-NVE+aCFW7&<{tNbB2&zLogWi0|n|%6zYJwM> zkJF9YxRy&eo0B-28unplw)~$i!T<0VKk^03X{Vkn5oR%w5%lL%2LDe@@UHU}p5`I$ z;zq9Ed`{yy4&wlJXFJyak2?at@(rt5L=#04%wsBJ7|ewKt_gZMKj014<%7?<6@nh? z3PI0q#h}-^V$i!=UC?J;UC_5%Dd@MZ6!h;_4hF0%2LroRfFYDdQ zdH3?(y@GeI=-sRH?v=cIW$#|ayI1est9thuynBt_y(aHovv;q>yVvU7YxC~4d-poL zdkegK3%z@bynBnidrQ1~OTBx`ynD;Ndn>$qE4_QGynCy?duzOVYrT8Vd;X7cAGdN1 z7jqUTaul7|o1NJF-|i>;$q#(aGTNw+AB|?ywB@A$D`cKEnH2fV(?i_G3e2` z81y{EyLYH}@33Of=kQ|C_lRQ9@5o}%|EOXx;OJs7@R(vS=-6T~xJxk@a$GSOdVDb$ zc0w^2-nAHvII$RvJgFFrI=L8(KBX9pIkgy!J*^mwJH6;X(JTfN&MXEK&ngC!&MpR% z&nX5|&MgL0&npJg&MyYjFDM2xE-VH!FDeGJE-nVMFDV9dE-eOgFDnM~E-wbPR}_Q! zR~CcNRmC8DbuoxsQw*Zl7K7Mz#UOrtF-Y7{43ak%gVaq$KaR5)WNs-2*;|W2?zUo( zzr7d~?kEPuJBvZxUB#eucQGj6Qw%Ei7K8fxib3@v&)`hDawG?{7dx`)zueFGgYQ|# zQd%jKrr|$pf{=3t;~7R@KIUy+;z=Ih4zA}i&gB%2GheZi1vIea zKWc)!GsYYyGm3%qpgXVeERS#xH**yiat0@G1P3ur|MB`y(0`)-lk}gg{}lbF>OW2Y z>H5#mf2RJk^q;N&9R26&KTrQ!{paf+(m$+!ME|J%G5zEEC-hJ1pVB|Ae@6eT{yF{g z`WN&s>R+dSN&m9`75(e=uj=2Rf200Q`Zw#}qJOLYZTh$C-=Y5k{TJ%LNdLw9FVTOg z{>$`VuKx=CSL(k?|JC}h(SNP}dwK>tu<<|K&-k71Sj!T={9iRei?c+E`AlaVL+Qgu zyv2(=!TsFMbzI6hoXjzFW?yz;>;G~;;ctH8OMd&OCRpL@ph}J?vzf$52Jjj0@hZ>o zFn4nkS8@TTb3BK0AbYSq8~$-W;Ws+f*?*n=*V%ua{ny#QKYI@MXU`FJ_FrfJb@pFp z|8@3XXa9BfUuXYy_FrfJb@pFp|8@3XXa9BfUuXYy_FrfJb@pFp|8@3XXa9BfUuXYy z_FrfJb@pFp|8@3XXa9BfUuXYy_FrfJb@pFp|8@3XXa9BfUuXYy_FrfJb@pFp|8@3X zXa9BfUuXYy_FrfJb@pFp|8@3XXa9BfUuXYyLG^$Bt_i;N9M-UyX6i^%%QVI^gx-9} zo4ml|bmKOz3B#x$reb|{Tf4iTsoxk2+&L8=L<+M{zmI$+$$O!uLDev+MPxBCW zaU)l7KBsXUhj9SAvmJZ?RTHfL%N>PZ`G(ajqKR?(kJo>K{uA||r2l07r|3Ub|7rS9 z*MEloGxeXP|7`u|=s#EgdHUDtKVScl{$c$i`bYJT=^xiWp?^~Ul>TY`Gx}%s&*`7n zzo36n|2q9k`j_>u=wGjYRsRP48})C}zghnl{af{K)4yH+4*eJCzfk{0`Y+ahiT+FV zU#9t_i-!Na4~0bB1h4Qy*c#H znqVjA=0DvN_>&*_oMp68Aw!s%Okg>&Wd9}mFWG;|{!8{>vj39(m+Ze}|0Vk`*?-CYOZH!~|C0Te?7w9HCHpVgf64w! z_FuC9lKq$LzhwU<`!Csl$^J|BU$Xy_{g>>&Wd9}mFWG;|{!8{>vj39(m+Ze}|0Vk` z*?-CYOZH!~|C0Te?7tLL2YCiPd7syLjz_tdTezBwIFqiN`+H4rr1N0*Vn;Up?w-IO ze9tJvh6qb1peV?zG5W{ zXdq9FIZS301L;9`UgKHD=|5io3Hndef0F)_^`D~uRQ;#vKVAPB`p?vVmj1K#pQHa= z{paaltN(ocL;8pHkLVxOKc;_N|AhWY{Zsm<_0Q;^)jy|yUjKsrMg8maFX>;_zoLJ= z{#E@O^l#L^N&ja3Tl8<$zfJ#k{X6tup#MVs7wNxP|0Vh_)qk1(%k^KO|4RK=>Azb4 zHTtjB{}IpN9&Y9;ZvV9=xX^h9CvXG@u_rsQ@mKc*e&;*ZvV;~&q?pfi#xayWe8gM4 z$P?Vp?L7QTO>mv_QqJLIj-fOAvI|>(aZliHe&S13&_R_PQD!rVkqqE7-s4rC;bC6* zxhA;Vc@tOCscipc`!Cyn+5XG+U$+0U{g>^(Z2$hh=h6PZ=P_mbFWZ0F{>%1Xw*RvI zm+il7|7H6x+ke^q%l2Qk|FZp;?Z0gQW&1DNf7$-a_FuODvi+Cszij_y`!Cyn+5XG+ zU$+0U{g>^(Z2x8ZFWZ0F{>%1Xw*RvIm+il7|7H6x+ke^q%l2Qk|FZp;?Z0gQW&1DN zf7$-a_FoRF7kCDzb3BK0AbYSq8-8|A;y1o!4U1`}jwH2AV=P1H&4;|n3%vVNP4Kw0 z8@F*SmvA;GaWpmT!_I8^$vuI;_>nJIPCNBvi7<pw;RsrpaTf4crN^q;B!Ed6KeKS%$$`p?t9R{#0> zhx8BYAJIRme@y?l{t5k)`ls|y>z~m-tA9@ay#59Ki~85;U(&yvmMFVcUp{!8>)u4#r`YyU$Os+{a5V2V*eHU_wDIe-=4Zu?7w3F75lH)f5rYQ_Fu98iv3sY zzheIt`>)u4#r`YyU$Os+{a5V2V*eHUuh@UZ{wwxhvHyzwSM0xH{}ubM*nh?TEB0Tp z|BC%r?7w3F75lH)f5rYQ_Fu98iv3sYzheIt`>)u4#r`YyU$Os+{a5V2V*iz(`n6}U ziiI>%AkJK-5c;kr80{QHPu}Nsp5syO~MM{+QGu_K$lb4TD0zGodvX{Ah> z5czLwf*H>745Kd}^ENN>BoA;0*K--?atgY=s+rD*2;2(bGD^{|A2J(#4f4u$^ z^q;8zB>gArKSlqk`cKn;y8bitpQ-;W{b%bxNB_C{&(ptF|M~id^bhMF(LbtxO#it4 z3H_7$r}R(jpV2?7e@_3r{ssMu`q$}S(!Z>KMgMyJtNJ(S->83+{>}Qg=-;Y;oBr+k zcj&)B|AqQ5(tol3OY~o=|1$lT>%T((mHMyJf3^N=^k1ug%QrPa%yXE-WJWQN9(3n5 zp5+nl;byMlLeAg>j^H5nWCu2WCAJadse?tGH z{we*_`e*dd>Yvj;uYW=RqW*RIm-H{|U(vr_|Em5C`Zwy|q<^#iE&8|W-==@N{vG-+ z(0`%+i}YWt{}TO|>c33?<@&GCf2IDb^k1$28vWPm|Bz>J7dLVR=W`mzaTo`%JKM4T z3x95V-v8nJm2X(hBAO_YU>;K$!(e*x0dMd;k8vNjat#-A7AJBPo!Fb5*#GmIVDsnh z3H-?qe9ki3sE{GdOeQd#etg0^yv$QP$erB4<(x;Ss{L2(ziR(g`>)!6)&8sYU$y_L z{a5Y3YX4RHuiAgr{;T%ypFN%6pFMT0+JDvltM*^D|Em30?Z0aORr{~nf7Sl0_FuLC zs{L2(ziR(g`>)!6)&8sYU$y_L{a5Y3YX4RHuiAgr{;T$1wg0O9SM9%Q|5f|1+JDvl ztM*^D|Em30?Z0aORr{~nf7Sl0_FuLCs{L2(zv{>Rc?MlLl>Iq!T}`l?GvMEK?n(T@ z*Q{b8jTDG8mnn>95IuRH*LjXdxtCkGnu|D-t{llJYiojooqMq(o7TD~@CVpVU94e_H>H{#pHV z`sej8=wH;oPXChrW&JDq*Xv)^zd`>-{hRb}*1tvnR{h)bZ`Z#={{{Ll)PIrwi}hck z|5E*z>Azh675cB#f0h2L^PS+{G{!Q7-h9ZLyujnUvZ5yF z=Ddw-xrDPhiKD4uA9iNT3iky5;zzzpVU94e_H>H{#pHV`sej8 z=wH;oPXChrW&JDq*Xv)^zd`>-{hRb}*1tvnR{h)bZ`Z#={{{Ll)PIrwi}hck|5E*z z>Azh675cB#f0h2L^_q6O%zEmkEx7dFunMIe#>ftH=NJ&82522*KjdsaUw_2iM`p0&CA>o z_>&*_oMp68Aw!s%OkgQF`{_XmA=)XY!h59ejf3f~c^k1s~GX0n9 zze4|&`mfS|wf<}LU#tHEp1~bl&t;s;DICio?8mNbTkMX&Km5#BtYiTV??%ApS-Luo0?7zwWo9w^I{+sN-$^M({zsdfa?7zwWo9w^I z{+sN-$^M({zsdfa?7zwWo9w^I{+sN-$^M({zsdfa?7zwWo9w^I{+sN-$^M({zsdfa z?7zwWo9w^I{+sN-$^M({zsdfag6heh!7+4ZUv^>ZLU$zo<|n>n1s$weP!m+0Iik#F z5+fPFXS~O&Jj27>%}rd%1)R?D9L|C4!S-xe;Eup=e9Ibs?5GJAJDaH^NiEYD%Mg0= zA#d^mkJF9YxRy&eo0B-28unpl#_2y^{|Wj})PIuxll7mX|5W{_=|5fn8T!xEf0q8U z^`E2vT>apgrN&Qp$r}fY1pVdF7e_sEB{zd)k^e^dO z*1w{Ez5Z4G8}x6~ze)dQ{af^J)xS;ucKti_U!ea&{TJ!KSpOyZFV%mU{>$}Wq5n$# zSLwf6|26ur)qhKeI}(5KBmdD}6MW%ZPCNBvi7<`){`YX8Uip|7QDdw*O}PZ?^wt`){`YX8Uip|7QDdw*O}P zZ?^wt`){`YX8Uip|7QDdw*O}P_wSyb?%zE=f_j#S?c$9m&g{!%UGwI5a9L%vT zHNjra9of|4p1>b`&pMXUN|`j{^dGPP1pO!KKS}?|`cKh+s{YgTpRWH5{b%YwOaIyW z&(VLb{`2&&)qlSJA^pSpNA!>CAJadse?tGH{we*_`e*dd>Yvj;uYW=RqW*RIm-H{| zU(vr_|Em5C`Zwy|q<^#iE&8|W-==@N{vG-+(0`%+i}YWt{}TO|>c33?<@&GCf2IDb z^k1$28vWPmAMy-lFrH!bkmT8P- z2)+4`H+g}_>Bczy$Ll{q|B3of(too4Q}myz|1|xl>pw&PnflMtf42T}^q;H$JpF6+ zpRa#N|FHfM{iFKF^pESG&_AhvO8>O}8U3^R=k(9(U(mm(f1Um%{mc4S^sm>ys(*w2 zjrup~->iR&{;m4A>EEt@hyDxnU#R~g{TJ)MME|AwFVlay{wwrfssAedSL?q<|F!x* zU9Aaj^Bk__63*r%j;4lv*qJR=_XPgpN4{V=?bMSc!Yn2-g8qEUyS&2Fyis2hJmkEK z8@Yn>IgR5uj04!6?O0#$p1`ks!)g}MM3DsZn93Li(~A#ygHI|o!Sl|?xQ|=8hKo6i zPObLeYX7bF-)jG@_TOs%t@ht)|E>1lYX7bF-)jG@_TOs%t@ht)|E>1lYX7bF-)jG@ z_TOs%t@ht)|E>1lYX7bF@4r1c+kbmi<6n_GTwGSA0w1Pk!KYmeEFq3}I$6f#LMy69$!Qf_I!R^Arzq zCpU08=W!}sIF$X_jevj4?g;$C*Q{b8jTDG8mnn>95aUZVK~LxVyv}nx%Dvpe)m+4x zbmd46W-oSRoc`nWpP>Il{U_-^S^p{ePt|{#{?qlJq5n+%XX!s%|2g{4)qkG;wffK3 zKcs(H|A_uk{bTya^-t)Z)IX(vTK|mxS^abR=k+h>U(~-&|C0V?{VV#{>tEHsLH|bm zoAhtizeWF6{oC|!*S|ym1^O@4f06!+^L zB@1XEPmDRFiZ#Jx=O_l!gYLY>vpm8*+{{&6$Qhi#5gf#x?7+sNI|9G+9c$^-X8&#W z-)8@9_TOgzZT8=0|84f)X8&#W-)8@9_TOgzZT8=0|84f)X8&#W-)8@9_TOgzZT8=0 z|84f)X8&#W-)8@9_TOgz{@b&2{kLc5wb_50{kPeFoBg-hf1CZc*?*h;x7mN2{kPeF zoBg-hf1CZc*?*h;x7mN2{kPeFoBg-hf1CZc*?*h;x7mN2{kPeFoBg-hf1CZc*?*h; zw*}QDovWL zP-StxCdfIX%w`fJ8Ng?}$E!TU!`#hHT*(ET&hZ@1f$YKdY{;vq<>leivIQbSM_huzfu1t{hRe~ z(Z5yyHvQZ6@6dmN{tNYAr2k_5m*~G#|7H3w*MEinEA?Nc|7!i$=)YF~TF+n_V;Mqk zKIBba;BmTf8`p9PXLAxqQ^P*&%$A%x0)O!%U+`AJzt5`@Q1>($Q3ZofBPu}Nsp5syOpgr z^iS%a(m$<#M*pn-IsNnc7xXXcU#EXb|FZrS{pffM$qyA0$H|yV`f2;m&`nT)f zq5lH?7wW%A|HYp763=_7{V%is<@UeA{#V-nD*In;|7+}jt^IfE2;wyzL85bqU-!@v zqz>%}(uZ{fnZrAR>=7M7?#PZHe^f_MIJzS!9@F7hM|A|HE*(MnxQ?K5d`D1!LPt=& z+cUU>Te*qrxrQsbjElK|b2*FCIfWBBo@05wBlzrvj-bbj9YN2RI)Yv=cLcp(=?MC~ z+7a}9tt067dPmUzjgDZzn;pTxw>pABZ+8TP-{}a3yxS2BeXk=J*1aPb{(eU=;)9N0 zsE;~=(I0mNV?OB!#(vrnjQgx37~i8Kn9#E$nAoc$nB*Bx?%feg>C+KR?b{Jd z>(}xBID79PE6V6y_azBR5CkPCiV3qKiWo6~iYVqRQ50qm6Ua%B$vNkobIv)a2r@b6 z*%JWC2$GX>9z6BCb^o|k_tcrHr&f3G?%lnHhnb5kMOT(uP5_VK8kNLK}wChGDc} zIBgg~8%ENGQM6$+Z5Trv#?ppyv|&7Lm_QrOpbe(OG?)yNU;>PT(J%@|z)-j`ZVc~B z9-}L85zfIGI0eVy2pobz=z|{Ugf?h~2B?K9*av&y7bu4kD1w5Ie+vEoLjTj~ ze+K>kM*p+ue-8c6qyGi;zli>q(El>}UqSz?=zk6UucQAz=>ISJ-#~v=DR@YgLWWi; zbXb+bhF2+kL=~^7tWxC2Dn+4V^r$Mu+*+mB+o}{dx=Qh5s(Afzl@iBMvu>wm5i2R< ztCTvSN@;ggDScuUuhy?p=ABi_x~odrldF_7rAoO|tCTmbO8IwJsoRy;K$XfLtWpKBSh<2WSPI|5SMWJ}0w2Qrun^vcx8QYn6<&fD;5nED zPr>8x2s{M$!@Y1fOo2P$4!9l0z^!l#3d2Xtb*XAmDZ>f^c)++gKtCHXLD*5lI zQov7D3fx(xpk3(yGy0R~p}W!F3jM9o-v<3{(ci90(e~)?fc}o??}Yx&=%3Fx1Q{srh?i2lXsUyA-^=>G@$SD}9m`q!fW zLAD)$2J|;#8_~ZT+W}4Je-!Kcrd(L#tId zteRJ)R;zeKwMuTOR_VxUm5r)a`K{HexUE{1m3(&@6hi^zLKdV$3M4`tL_-9GLJ;_a z4|swbID-S&f)(t79k3NP!FsTOwO|52!uPNomcTdgC42@S!(vzj@4^Cj6XwAy@FL8C zK;m#V_8E8*9s^sJ&BQ(kGhjMQgUK)nCcrot4Wn+_Y7Vzr)?=$>Gp?FTvTE6lua^CU zYB}6dEysz~a+*{v=R2$Aa#yunCs*_DiK^v3wOSt2s^xiiwY=`BmiP2(`P^GA-}|cN zH=~+=cUY|e&H;fBR4eGgY6U-3t&oSS6*{w8VUJWR93sA~R^(UJiZZEIw4qutrqzmF zTdg>=YQ>vZD}gvjw5V2+Wwnymam~7(Yt{{1vu@;?bp*#g6gE{WYjd@-w^S= zRV!~h`tLyhpU|H;DB6ksyU_n<^e0}+cB8))`dg#_jnSOb;R;-Yb8rSu!ErbOhhSjz zcp0(X&;hN`1ocn@`(ZEq29;0-#ZUmbkOk?G0*Md@(GUTl5Cs0<1D@ap&foyHUyRZP>1RM0XMSnZ=w?}^m^mjymC-iql ze;4#8Pn=!RpIC8qLw|Sl_dtJ7^!Gx4a^IWlTpw@r_d$PO^yj)PfOAHmANu>FKd}@N zfd0f&SRncbp?@&?QzxQA&_5LY!_Yq*{Ugwy+K~`ht;8twk4FC(^p8dVIP@pB(&MX@ zkx;EnVk|2W{fVudqv(GO{g0#n3G_dS{=`<%DfFkll>CMM#90~FpXH~~pLnaBM;p8X zFTxy{4bQ-n@EFX52Vn+GhiNbwCcy+42e%O$x4=-iaU1ajSKz{J<9P@Fc%6dd%pZXf zHQd@pji;}UA~Uh6kO-5wHyj7COh-Z}1cEP&s!__VHA=m$MrosKC`~oW7+a&vaW&k2 z)hK&>jdJd-QSL)E%9~lE{6}h3;K_Dx)u?EGjfxl4sO0S$mA+G>GFO(rTcZj`tSy{D zfAY=xZ}dNl{^!vDJo;Zie{#=}dhK)({mDU>OXyD?x?M(p?yWqop#N3$zefIFC;$IJ z|9{c{2KuW;0YhpOIJ8DV!)g?~n|=KRTVW$u!dh5VBdf(VvR=dVS2eQzx<+=ZnEs|l z4&Tb)F|u;mOTh&w5d65dNP8&?xwx1S$2^5Tlmf%tXqvD+|k^lMp2$MiuS5ejCYM< zeQFeUi1zNJy{F@E3+py#&(P4ES-O}#OUI!Pnjwhq3}!zeH7XBfKVdbh%wXLZ*vIE3 zkO2|2X$U|XRHp5ZvcIgaVIiV3e(?DRUth1V&5dc6|D>y{~EDzo!Iz?*!Y*&xPczj@KDt%Y)Gxbht?`$Sgj(5*D7j6t)g$? z7)Nr9qiPjLU61EHpTK!Ok@}u=Yc2oAqE;!~JEo4VRT}61^f9&MM=kkLOMcWU8*(6b ze68{()GGguS`|#J<==DFs_4#I72j2>lF79yol>i^skJJfR;!A;YgJiKJJrB`*bBeX zh85USD1toZv#}YF3W?0eVWS}eLLrc4epqkt09SAVd$57suoJe!7T5^uz#L3rHQTSk zu7IWR4f9`OKZB29F)V_2VFA1e_teU2X|1f6)yight!!7+%5G(??7@NapyT(oa#~d@ z=O1e2@?))BhmzB)YvsPCRvsp`^5mM(%TOzC(^~ngt(C7?t^CYuLry+ctFDj&3{9?I(2GiEg`U75{Us5_Z=r(W+KS*63z~ zZjfq=Zg#aww?{Yb^D-UK%@N(4(9Id$T+q!G-Q3X49o>756WzSf%^Tf((9IX! z{LpP4ZSV@b2y>g{m-NS zD9-5@(ElR(Uqb)O=+AXU5;pk?`g3iOdKLYzq5pOC|A)NgIwOnU>9YSt{~PG9I^_+i zQ~uC86%4CW;qW>Yji}?_UDT;$WSvS!)v4^(I+fp6r;5>as@zH&Y^1%`Va>r5*1#&3 zt-vn9euMoIK7)^#e;*by{WiP>ufwbG61)J*Re;oqU$o$#+?u{Fc|re?^@FR@NzyYrP<@^@6{zQ^=}1h5k^dupjFb zzPe5kYw8qfQl}_G9X|u#yr!??nx1ou8Rr)BIwf$OkZ4iIHGLh|^mSa**Kti>$2EPO z(l^y9V{@G{x6~POU4!;+{B{&a%!(VU$j*P?)^dHYP9oOGB4(RWQ{!ZxcjQ%d@?^-7(H}rQ$f3D44 zJ<#71{k_oNyH1`y={F1)zT*`UjzZaGioe>J%J`{$c2EME^eY???Xu z^dCfjuJ5A{)G6j5`X567Khgg%`X8xN;!*TJhW^LV{{;Gh5mn`KlcM!r_uim z`u~moXVL#0`F|e$FQ7la6&GDZ|4Zn98U3%I|5fzAhW^*l{}AmkKsy+*UD$SP3p6lY zi>-paO#ccMOqW6tnZTgt2}w)*tH)9!$Gn9l!>5GrtqIF}(@aff*QB zwi;H!3Rnu?u>4ExXYdiz@58&WfcZCJ9=rl`S@s;vV)`j~jOm%!2Vn->!~9h2T`&>G z1NTf;|B(OxlK(f*U-hyZQZM_V^>P45?x&o%PIn$wFPGuy^2xURgiXEBnWK<*cq(?wWe#nba%aP_F{hdKIp%SCLu0in-@2F|SvtMZL-_ z>s7w4UKQ)>RXLV6xRrLf1v?A`|J*{(z$G|$%Xt2W(s-R@`Y85K>>#!e+XEd;w?HG) zwb&}`UhHq!N+^S3D1cnZP1o*7fqTL4RBHx2u=0J^DMKzhk`uoY0?VEJ4oo z3U)z%SM+y7e|PlvK>shfr}spEFZB0De;@SsMSnl^_ecK#^bbV;AoLGL{}A*KMgK7L zH==(Z`uC&%0QwK2{{i&pd05^-^go3Df1>|k^gn|BN9$F>y?*I2^goXNC(!>S`oBy& z%!TJ@i)Y|TrXPcu@F2{9=`al@!z7ph<6tz5f)OwjZj9i59xjgjR$P2F~CB zwy>MecVf507TCbNCH55h|Aqdi(fuOe-v<5O(xAORnrPqcjrwDR zLHi?be%`3+HyU|e8vFdQQFW^uRllxL4fX~#IvCWni2Y|8)bc)dfOXadsy&SDstxM= zv{79)=yJ@!>#6vx7eZo2sT*tC$gq`04bE-Wfx$K%>||Lxr0{twwi%v`9i@zJ9iO{Z zCkg}UW>=_FjV!P2*6F?hoq4%Yxj~WqegIzZs)?*#Gm-VDCbId=M7B#!WVg&j_RCG= z@PmmQ*P6)5%tX%SCUUVbk*lSN+}4@MeZ7f1HkioMjqh-RjVAKhWFp_qCi2^2BLA%> z3fN|%!0jdq+F_#LpG*|8(?p@WOceIBiNbfAD8kA_k=7=PvN2J#t%+jnOcZNxqBsW= z#oI(q(N1tQQIeC1lATTXJ;p?-t|m%zGf}#`i84G)l<8@rtSzkPho1iE>1CokZxiMF zn5e+lM1|{aerBR#e-o7in5Z<+L}fuHDi1bMML>fp1BvSejS73eQQ=YeAC3Pp_@9jb zDfnNG|3Sp{vPQYpk!uzB-;Vzs_}_{DT_*DCHlcfatK9at^1B@V_u{`1|NHR2AO8pN ze-Qr<;QvAVKZO5(;{Rd%KZ5^9@&6e9AIJX__8DgT`EBJpE|F7Zyb^QOwL`DDN{|)??fq%bdP}xv}%7+r9sx;avZ-HWc#Z@cGMQT%e3uYgBQ@T(5bOPEkn3UAJAwwsS?_Z`yGkv+MlHQgEoEEZE;RUuS~|3mf7jl~ zZ;_2Ec(7504>hXjD~@>|$Gm|3ybT|-eJ5?pHmTjTZ4YhROWPW0+dkU1iFIc6(8jcD z2FLI_+x`ZXX!tsxU7#)wYgE?oMrDs^RL&mS^_E8Ejby(|_ixDlrGwP@t=r>PSA z(Q~4ylF#y4Ip0$XvrPH7_NK~s)l`|q%s*?Y>@Yrm&s4b|V&6Aa{vK1=&NEfvJ_{8s zWZ4q-Tf}*}iF#bnsPdJj{I49g{oPdV@0iLepXnTqvB_Mvdrjq&$@FHndkq%S2Gynt zOk-IJ>%GacM5b#@6&BBYEJVZSERV#7!!o8rvBBWQbRgCr>hZ-F>kXdZ4laC`6V?H2 znYP9@BeN1lwUNY=(`{NqbIdQvM4~Dp=3_ zKDL{-R>j+zR5Hy>r6Fc2n`W-^q9#>bZc=4#qtfyk=>y!T49lDAqfa0D^rO!a>iyq* z-#PTTL|iyqsPHmzafRc!(a60H>yK{Yadnf*$MSvS_`chlWHq@-*3+6~!+F&9?k4)c zHqi&Ri9WDRa-7*Dr>C0a{B)CCo@tWnb4_xa(mpO^TF$Gh z;j1PUea(KqVZYxtDf~P3iw}`YniRE^{Vrp_E1DF$lKp=3$Fx5;}&zs5m1vA;qHIwa&X0m(9O!nWJ$>BRQIW94i z(^50eNoI0cZYI|iW^!9;Cim~nqj$ruQrp<8Z-Htn90vzCVx{i1*|nw zpqZJ1%*_;BL;GJ{tI)65=clk37J{XjqSl!ydcB!qHkc`PqnYA1nJIp=nG&{`DRHZr zlD3&CdApfXc9<#kCo`q(G$WqPl<~6}*H~uCvNBV)wV85k%#>?uraU_{<=dO7z`;y~ zj%F%yGE=d$nMz!UXIJ9c%}nL)W~%ToQ{{lUtOm_xeZX8c2g&C{=Cb?KT=s{}<#5DY zjz`Vqbj)1N$Iaz(!d$K=&EeTq&Y8>iyt(`?n9Kj7 zxdJYk^Y66G6?Da1!B@={a?MFwu%M<{ zDE<};e!8(x;wTHA5n1qz$bv`j7D^psK^G_srH`{v#_bl$9B-kl2^Pw}!$LU|EtEUS zLV1gc!8*)Fk= z-FL+JQVTgOvykI*3psHvab95|7tSZHD=p;KK>l59lE)?T??(%Ht+tT&8VmVwPVrqs z?ANCcmx+Y}3>FGBwNTJn3k925D1>uS=-b(&G^ttPcQz~Hu4YB9!~ga8zXAU_C&X^V z|4sP68UMH7|5p6phX32~pYu=Z4*Z|otaQ$G89VX+ZG3H+Jx#mt|7ZN)jsGpPXUYoy zt?}Om|2g*++u}dxy;3{;=UiEC-mHqxnq{@RS=I^7vUxRoimIDscUz0>7q!U29p680 zkyE&ZoKx|=)IzRb;`^&yC;b>n{^REg?5Y-d$F|64LMy*BGrt^KX3tjb&GQ-j2ERZB za6e%M)?fp+U#jA>PJ3Dcoy|LySM+SM%Yuh8fDnBlrJWw>r@ zrSBlttyzJKId>Fteep-L9BZ28RNE})B^=M=tty$)s?x=+D*K~V4&iV~}S7S4; z#p1h~`L4cZ6%974_+Yb2{%q#;?tIsgW|be~yG}IoY!mIcce3W*%7%L@Tei1jdwaHb zV0%ZlcVc^Iws&EBSGIR!dv~_?_yiv~*LZPW`R}~Jb(JsY7r(t+*Kke=;Cd^N^GXo= z3FbT!!nIc@=aR6G*zN<`{$c9Y45%aS?#A8)S2><*#L{(Q>ECAAo@wS^(Q-T@mWH&* zaRTcMYmqbOE*H*`uHXjl?9*d-i#$1JdVx3ROCR>{JBIZ+XZnw7QNT#1hXUu!;L$A# z8OQkq!XW>Vy~IV_Fn7wnfq7TKM-@%#Uy3-_~HA$fINbdp_w9mUD7S{u-rn{!Zgq z)6Zp%7wwSAIXvr*7G)pE8YRxxxtve)CblSlQi}@iY*FEq78RjaarNwRn%bgLuK&t7 zKbFsFQN{cgRW4|e)rV-FkKR?YZ-a3+uMO;HavtaV9og22>tN@q*>~sz)?3WA;bQDy z7SD><=i4pvdWT$kmt0!dBH#B~DXk5 zhqe}_wYMlen(2-fWp=hGE1cD{e0Izi!uiJt^<76LE88*ZG40_KH8$ZW3=&c+V})*e3CXk)uQ6RXyem2+qgw# zf48XoEHQSD7`s4>U22i_l@{4tZISJ@7TNtvy&lrabAeVlu4otGZ&kpCRt0WsRnVqZ1#fOu$d*=x zZf#ZAwpN92Z&k#ORz?2QN{qECdRMDrer{Fl?pDQFwJP4aRS7n&O0;cNk{$KhzEvp> ztx9!lRhm<)(w$qC;llm8Ypb%{sMqeT%JFC=$6A%=)vEklu9eBhLh`YQcq}FtOUT7i zuBXeW5#_{o1=rJ+S>#DNq(CCXK{P}_C*6G+XWg?5Jh- z)G`NZm}42baUbA3nc7I+x^gezMy|S-qZ@V1^JcB)Ucj4t^C91SsV9D1Kl@Wl1E`;Y z(n;6O>2|;-EH!?r%j$i z=)W+%P2P-I@VU2*KB;Z=No}J~YMTNcXj9;WZ3=p*O~DVhDP(4wLLX^U*rROUr zkGCoEi8e(&*{0~H+7$D2n_{17Q`}L;q|9nl!n18koZY6R=h~D^pOlp6+muRwl(ac* zN`IkE8FSl|`C^;0UTRbJ%WcYerA@i7wkhwmHlAP5e`Q{q3SVzi(Hm_lezQ#_Z?&m( zew)e`w5j}Ut}EW*y5eFc?L<4g1~0>0cplCr^P4pGX?Ox2g%;L*82bR+2lv2KxCJvv3+tLIr&oj$seOK^OodbVCQULKDl?I(wkACpvqfvo|{XptCPJ)3?;! z51swdIiO8mf#@96CZAw*4ngNobPhx3aCDA9=SXypLg#37jzQ;GbdE#kcyvxc=R|Z) zLg!?3PC@6?HpQo*b2>U_pmQcVXSFFM8=Z67l$MLmdFY&v&IRaPh|WdmT#U{k^gS;@ z=h8M6l%aDuI#-}`B|6jJz4RW&9{qyOzoPSR=p08IL_-9GLJ;_a4=hUOnGg078swvm z8`I9<0JdNSyI==wg%Z}OgiTDZ2MbsWCh#MC56fW*d;?#?XYesBhDGo$EPyv*9=rlC z!W@_l&%l%L7|etRVFpZxX)qZk!2}owqhS<`fT3_>D9=RT3Vgt^?m_?G(SI-c??eBQ z?XnxyF8f>C<#1cO97ngyX-vDE$F|F5T)SLvZDJQq{`(``8Z?^OMW;?%cwkzzOc7-!uFk*T;|2vwoXZN-% z`o4C>%xG8a{q2lBW9$Lr1rr`1N_wbW$q%2Bb3g5z4@Hu<}AHw^v5Z;Ej z;B|NvUTK%rtL?IWtz9+)e%iHB+!q_AFB>SyE|Cjjg7vMRV1xJaqJ_}i2BF^4rKl`aOj>Op??1%d@ zt847%rw%z^>tKvir(82S<@R)!+%vl5@pQL5pW-_nheu#RB+m-rWu8?$53h1A+eQpH z5d+S|fD19;Mhv(U10KYHCo$kf40sa*e#Af^F%U!y1QP=x#K4i^<8(QP8qfDUWhuYI zOdDY~^V6!v>M87R%x@xoHxs|bOh0X@h%Ll#7So9k0sin1$M-1fKM3pD|FZ34#rdvi z1N+~|{-3p^?>y_wwp7NwtTV@w-+n$Bs~0SlGnM(5ER{D2`-&y?>&~%y)lx;bGe6H# zCAVSUuvFOy?34`(fC(E#){qm+K!(IZwy8dpYjAVG7&{ zcfh-r@>*!g^9`oovy|^gwBHz}KeklBXO;@QmFdqd6};S%=hRHEuvFMeON9?(n!zLb zX9#^l;1ZmNzu_-90Y~9aH~{_73ti9-Ezk&cPz`^;@9;hC_bavnR#~d>2inhIsp7S? zUn$FqARo+WzpZE=O8kcr|KY@cBykx>{3j5XNyKFe^)HRM%pm@=i2oewUmo#aK>QaH z|3$=qal5=qi2qXJzl{1fio$MN|_% zHSLP3qy9Be|C*?O&D6h^cEz{0E1`}0*G~QGqW<+#|N5za2dIC4QvVK9|Bg`qj#B@Q z5&Or9{S(CgNn-yLvHusbcbeEgL+t-e?42d{&Jp|PiTw-2{zYQ{68>Mt|10=^75}f} z|3COYv;+M+_<6pAd)^NIcQ|?ZHF>$FL#`$rax-+u-Lyj`1JGedTP@rXpg4T5?nCr)o^&JY`(4nx69SYynp$M)aBa_)S0b(Hvu5*2LgqRLz zIs^j254^zxT)_!m;a>Cwcov?7N8kb2+##zi9kSlqA)9R-vfbVxyB+uwfi zFqWo+e=FRfvNIhj|GPsKXFF6mg=3fqisf(K}$PN;`y2m>E* z2PgO$cG8yHVGC@8bzlyr@Cl!x0&%W3p(Y%eX8TzopR!Q?94rl3->9m+^@KCZ{yDOrU&<(p4{_z zy@USmqW@(2T`olb_t1Y4`rlKn!1vMr1N2{v{@jm-eu(}bq5sF|{|Wkk+Nr3|Iu-qS zr((Y7R4jEcjyf1m9ZdMLQ;A=7D(UM^C4bYYly5tg`dz2emUJq8X{R!lbt-dtr?OUb zDtl$8a=!0W?y64Z{m`lWA3IgBx>JQ~I#p!SsbWK?N=!Rdx)%M-(BHgM6&9VUe4aKq z&u`Sv()MSuPh&sM;5q=>qBy@kJ5EDbcA5EbrhmkqhOjX13HZF5>2p{k_7wJM);WS5 zgjSZ#<@fWGXg{CjU!ZLW_B8Vre3l43tmlS3%(CU!A$)FRdffBl^eO9q$+E@p5z_}* zJ^)LY@5YW~-3GR=f;~_U>pEq%zEjp4I%Tu5Q?{FK>e(s#E$F$mQ;yrvb9<+pcXaZ6 zgX_jJt{clc(H|vJsZ%o5j~sGvl%^G(6hBuac!N7Z|~$^_n>DddUl~_H+uGCwd-6&m-u06g`ij=W+Brfu1MP^AvjibyLqSSy^_;dR>=n)_2Kv zLznC}cFBHImmD^C$#F}UoVIq!d0UrUws*;ON0;1w;+lCU*UY=R5`vqm;CLz6ky+_K!+{`Id&=7sY@ZwT?%#SQkZL(!ri(UC)dR|xh}@Zbt&4b zi*a&YjFan9oNt%n{koLk-=)NWE+qwaDLJT1DZyPz4e3%^Xcv!Px|9*#rOb#fWkq%= zJE}`L(Ot@o=~7;7m-6GfR1n{#!h|jrC3dMesY@lvT`EoKQdw%3%G0`3k=~`s->6yt zJUd&t*oQNDzZv!(>_o_zvxr!pt=pI$0+%y*pAqw2PzS$4J|sgpgt5N=^V8&l-S*$~ zJguHH8y4wv@MfLUe8*w1XL>t0u)nQfWZC<3X3CsptxVUzWWMWU#1#F;bTPcecdX=d z6V{)_^cPHLu{;s(W&Sc((f=CyUq}Cc(Enfbzk&Yhmd}uG`3~)t->`1F zWppcGL^s`{yA?FDTfw8c6>@7gL*=>^Ho9BkW4aYFwwqU-bSvuiZbgspR?LKM#op1a zxQX40pVX~{JG+&5SGSTTcPn{Hw^F8dD|K48((dk7`aRvsnBJ|-d%Kl&U$?SnbSvln zZsk7Et-J@jmH$w;3LfrO;mmFoJ<_e>N4r(>Shq?a?^f9p-70^wTNO`rtMWF4%7K;2+OXb!`0^(QD0`lJpGKO7iP_-&OAh&;r&ib573rI?2YH&; zDC>u^{^X4Dx&y|-C>RE_;0c%s_rpD~Fk_PD!#sEio`+}Pad;SJz};{cOn@;k5{AMJ zenaY{4!6T~rdzSiaFKKL73MEOBlFc9*Y8jPMbO0YT6B~D-Q<5a`QJ_cca#6!eHxP5yV2|J~$&H~G&!^UvMne>eG${?_PkgZ{SYZ-@T&=CgZ{qg?}z^W=pTUof#@HE{=w)Ug8rfCABO(n z=pTXpk?0?V{?X_kgZ{DTABX<&=%0Z8iRhn%{>kW{g8r%KpN9VF=wCp)Za zq(U+zLjA09s++|#AEsj=iuJ-Fl<8k*-KG8-FCHo`iVTVTz=6#hd0)98N&{r^V)v*>>g{m-NS1@ym&{+H1IGWuUZ z|EuVK4gIg9|3B#eFZ$m=fAx_6J>-86`QJnS_mKZR-86`QJnS_mKZR^PnVKuCTCGZt| z3X5SOyv=bf9x_Vr!$Pi=-oY+_H<_LXuQL4-_O>H(c%4|94{yL*Z1+06iXSg>UHm-E zf+yion9Fvq^jCNtX0py4=5xsZkC=ZSOz7A95bG6?|4$PS&kzsKVV}p&Aue7ZE}mnX zXWtJqT6bJr=SaGi4Ju2){+dgagEpn}2;DxAAfMTHwx zJa-eX6WzpbvzzH_v03GFx6oH{iz=TbK4udi|9|h$n@iknA?^x@yEfwP&R%8h=vDUB zUgc~tD!0I>yhBDV2l`Zy-KWBeJ{3LNuj2Ln4A<{h>8XB|Jw2fET?48pA5i7}9Q%DR z9qxvyFd6QIi7)|fhp{jkZiSIB0*1k+gi#uTU5CA)QF7xx=3%tC5B_2P8eD;?%>NsP zj_FhM96SY&!2NJH+zGdXFSYDe>@fHzjrTXg3^d~J#*00&dZ|a&FZamil^)r?+9SKy zdSnj{?kVH7IF)l4>rR15@Fw$tY1~g?AA|8M8v~rhpS-u?gC2Q)-XkyY{(|}lzTgM`U*bCi zLJ$OhMSX-&2!rsi$peUlD2V=s`UtTQ2l3zHJ0wC9Brl;pLMo&|`cmQ)G9e4H-KdX{ z3we<5PJM(zD1u@S>LZjw8I*fcAE6Sgz}gG#!PXn?!QKb$!O^!zPT=g?~xn0 z2lU7TJi!aR1Mwex!4Ld{@E-yp2!ez0A3`Av!b9*MB17>Xq9F!iKQdJu#E0QOBtjA- zhvPq_LK>t;;6G%3WvVR5j%4592mTNc#l9gZntek^4Eu(#2dPc5>>DEE*f&JSvu}t^ zpzR?Z5+E^=eM52*`-aqH_6_MN>>DyuX?w^{qwOI#owkSk4B8$Fp(vBKhY~2wqV1s^ zDxfl(w$GvMb7^}%x6PyN^J)7E+P;#u|An^ymA3zlw%PEy^8GaRa8%}qI-K4 zW9(IIU$5f&dlf&>tAxQ`B_8M{?|PMds8=a}_A2#ouhNe6D*b4$GLH2s^Efr~1U2#` zHS$!ia{ua8-sxWDpXpV>-@Ph4+pD5;y(&K6tC9=7D!tgNvP-=xzuc>eE4}o)Bj>)O zj;sMk^7K9IXqLT(Jx>naVA)ir&oF%wMlyXAI|N(BXNQziO1tYexFR8)f&pk!M*(IlO6<<6A~K z%{R(qf)*%DwP;XTV>>5d=QhwN#+kmW&LPWHZhX3n)4QMl1H56uQ95?#7O@w zV$xuw{}wSxyp*C}8Tyr@TLrpR?xhWj;T&yoX3ibb3-oznI+10C*mRi6v_IAw8X$?b z`-Ww4*c!Bn!tP=|4ErI(vQ9VzF&&8Y!}epnux{W4XVWI>6dZ+v&<9=6!g;C={(yY0 zwd`2e3UKhEn$TE8kHHA27cV7Qn+t7{896Z!rBT5Vuyu zsx`4{L#)~ot9HbKJ+a_GEI68?KQZ9E7X8i8AKl%|(I4$S(B2a*y)4k*68+KIcOCkp zw?BFZkne%yd(e9HN6(NA=uf_fk?-N;djwiWZbW}_J(^sPA=hKkF>Vw3qgw*Gok(sc zk=x1Sb_%(jN?xat*XiVS26>%HUT2Zl*_(~ZA-8kM?L2ZjpWH4Ww+qSbBJ#SJye=WH zOUdgp^17V7t{|@~hobk3w8Qf^+XgLXVe@ITOh|?&nST@>f*EiROo2%-9>%~ZxDWk3 zY4iD5TkJ%vGj=$i39g5Y*JXH?eT?9<^Gu(ClW-Ic!2rav&u|C?Z*T>B;5Xg8-PrB0 z5zJu?tc3623-}1$gZc0p%!Oy+33wRp1L~L+b zu#Zf>D~s>Su0-!&$oF5lPW_GR)IH?;@8tVlBYo+}_dkp(*>6;7l~HBYMwQnX>Gy7= z-#hiLo_g0ny=$c2HBs-HiT4)by_I-xBi`GI_YVB;#D9*(tqcFV@xKTEd-0$Bd9yzs z_UFs~{MesA`wL)yf$T4c{ROkX5cU_!{=(Q_IQxrWf067jiv2~izZmux%l_inUp)Iu zV1J41FNysnv%eJfm&*Rq_&lA@Gx$7{&$DQwY}zM>b5<_7kVh`$lM4l`SIBxrtXIru zCB%KH5&xmQkK^v=xWQ+D;~wO=4{+QEIqp9>?!z261RvqJk8<3{IPT*d_X&>sB*zU= zr#SAvIBtkN&2dBg8IJpJjvJEBa@^-QZb&`PaYOnAjytYTnUEFVr)WDpYoFW zl%LG~1r(-mf05d!;gOGC{XAyvSJ2RY1rO_2$nbuJj_7Cjdq1yG z=vTzZeqP(suc%x5d97BzVn+8Xc1*wG#`g1C*{Ysk9ujD)Wl`^qksgwGZ zc4xoR@9O70+x@&}yPx-L_w%0Ze%`a)uUy(951;by=~uz@eih!^ucG_7C!4`N+5Oy; zVar%n{y@Jf9_+t)ZsY%ELNVk*IwaF(iP&hc2Y>JcXRw7`uoc$BTKEx`!#B{CGKG7i zDS8*)gjZk=JOhuxgD@Q?!vq)&Bj5(xU4e6O3XZ@a^gtUlKo#tPawvpsNQHQagkbOm zcW?x2_z5<{g*gu>d)5Q^_JE=x82)A1L;buXxSw|f_sfR%u_fN@h*$eZ`sMIwzZ^%t z@PPiBGYuTnKWCo2*{+m+pclpS9GIUqoN*n)wG7TMe+rJn5jd>j`V$U83D4hufkBqf z>zCK-{qlaJUp{a4^RMO@H~Ch-{O1!h3y7Jwi5bRS1oyFS4|GBsG(!W_LJi+p4UeJ! z3-!ugZ{J7|0VQ)8U0^D|5wrfHT3sme8oF#^Df&gWE;q1{6jwD z9}3=Mn?-E%KHGf2HjCNjYqt4@nE95N8Dgo*D)ze{{(yb(2;)s2g1t=t4twA?F!JoH zi}TglG};A@LO$oVgV;=LA2u1=g>7TKX4bFA{=z-{0Qc`7gpZ;#4!_f2Uxb*O^Kg;R zGP!s6V)`)CpJGp9&%jYQ1dp=pD9nH<&}Ipv zi{BQOqyLJ2IWb1X8C<{>+-NU%@Bq*M(US2pK3CcAO)b&%KP}NTkaiBDZG&ms5ZX4B zwhg0g!)e=ypUMB-OXkj z25szw{?2IWf|g~>yQ1Z@*^K!?e|NO>Kub@w^g>H-wDdtsU$pc?OMmh|fcSsKRMucK zpRulBx4@L=x~6h?*Hn(+w9r(}-~z7T7Ks1g5rqHX1>WEjOe}+62>wF=1VT_K^$$WI z6vD#rA0i+UqQdbXVjvdcBJdv)AQ6%x@gGv6@E_8mseh0WL;ZuSSp0_^$c4N(;vWj2 z5Q^gQA4;GU$`bG&Dxeaq644)Qz!vP1`st@c{(~bpCHKo2T)-9FQt%%?etcN#aJ$xAJ;mcSLKgN3aGu9)ZnXzGv^$23DNAR2YOD=>G z&tb%JxGnz9$6rVMWlTdfV;W)@(-6y;hB(GF#51NLfiVqOhYnb8d4Y=@ZVUR zD~u^-Y(NHM12P#Kkj2=5Y{mxUFg75Uu>pCE4aldzeF0+w3K<(v#Mpph#s-uu$6q`A zU4h=|{06xYy-Udv#s*q3Zoryx12&8suw~qU9peV<88_g-xB*AT4LC7wz?pvhE{q#+ zW!!)p;|AOrH{ijz0Z+yacrk9kn{fj^jQ{dw+<+frgZ&v76u`KFK*kLOF>WB3aRdM5 z{9gkKTZHDP2NZE;K#_kBDC!L~{|?QUp!w@)es)0dJey89H=xAx14_CupyZ1KO1U&Z z8w@Dz%7D_Z4k+W=fHJQSD2wOs**t&G;rV+m&)@TS{+`eC_X3{37xMhQi0ALcJby2# z=Gk`*&%SGU_Fc!bZ=Szbme2;pP{4U47qZ|M#wC3~KY?_nr_33ryXec1!gLhNX7cQ1 zEqw{T0iNAk@$BB3XZJQdySL@py&cc)?Rj?Zz_WWtp4~fj(rGZ!SWI7{68aLA z(wC@=zC`8pC8{{aGn2RJr|~8f(XWp_injDow4;xreHr~4>7(eF#Q7=#=&R^LUqx5? zD!S2E(Vf1E9`sf8jN`KypwFTYeHMM`v*<^kMgMC0HPUA>FpAH@X?OZAhR}C0l)j5$ zALE4eD5HAn+N3`F({wDLHXW$Kz>UP z$Uppm0*nU~IQ^i4mL61a_(6pj4=Qx}A%!hHr10=ViZC8hB=y6J`tjd*O6rF#^}~+( zVNd;Vpnf<~Kb)u^&eRW=%Z#U_ez;LT+^HWP)DKVUhZpt3oBH8H{qUuJ_)$OnsUHE< zk3i~25cMON8WBQ`_-}kZH6olE5kZZJq(($hBmR3Y05u|(8WBg0h^Iy*P$Lql5lPgD zWNJhTH6oQ7kw%S3r$%H@BQmKGS=5MZYD5k-A{T%1@F$;oSb#r;_)~;G#rRW#Kc)Cn zhCk)_Q-ME~_+y1X*7#$CKeqT|hd=iC&iLbkKd$)WhClB3P{9pJ4n6!Jkn43B#Xo{E5JyNc@SypJ@Dv!Jk$dO#I2hpKSce!Jl0G$-|#~{3*bnLi{PhpJMze z!Jkt6`ENWG{#4*kCH`39k2U_-;Eyf-*x`>o{y5-|BmOv{k2C(b;EyZ*xZ#gG{&?Vz zC;oWhk2n7K;Eyl<_~DN~{siDpApQj5PcZ(3;7=(2gsmlZ@h1X*A`MKh0sM)1h`9cd zY5a-DpM+IRC(xGolZ-zp_>+o1X)9TdKN+r2dH9o$KLz+xh(AU6 zQ|!U_;7{o?@&|v)@uvcRD)Gk(f2{Gx27hdq@ZI=hk3SCh=5PJp@Ac``>RKe&4*ms@kVXo)&r9pcI4TUM<$PjJXZ49$YUpu<2%?6Xb48vJdB)_KkY`Gs8F{YB zGbhi2JjQ4_Ulq z@sY((mH=6TWC{Hg= zP871#$WkXugDg$5w8+vXONT67vh>K(=U5w%<>9yFWEpd;O~^AP&x}0R z&z3wp^6beYlgC0HD|u|>v6II^9w&KR{E`bMn0UE&=vGdDi6FkY`Jt9eMWTk;!8rkCi+&_K%%B4)Qq3 z<06kj9yfVBIxEB~Oh!b@DXWKTYzq$kQfIhdf>K^w>Xr_RoMkL-JgaXGEScc_!qU zl4nMqYx2y=vmnosJS+07$+IEPmOMN1?8zgO$3h+}d2HmdlgB|GCwW}tQOM&akB2;7 z^7zQ(Cr^MpLGpyi6DCiDJW=w**gtXdB*>E_Pl`Ng@?^-9B~Ok#dGZv{@%;TGJb(Wlu7CgIjdb-t z-AJQSONb7&Y@$b5kw#tpPbKgjN zzOzI2+(;Jh4c~LX`Oo)k*!iw1$M5CY*LTCS?~SDJ9Zv4Q&9m>PbNqk(E!TgpfB)gF z6!^=x{A}iyKZoS_=ew&SpULt64xYWgfoJdklxJ_g%PRTp?Ei1RmC}FbR?2+GE#H62 z`Op0F%&WlgBGZ+azD&*vIjiKXk+V+D205GLY_a}ra(2ksC1;PEeR2-SIV9&5IY;Ci zGv0)pQ*zG8c}>naITz$yl5<7QH90rr+>&!g&OPfRlhZ;@E9+$=r=4|kkkd&{7daJj zy2$WGSOil|qt>m@f-XPul4#%q$ZMb0)kJLK$=vq#Q8IS1q%lJkn3BXW+(IbnUK&$0dhS_YnVc4KTFGf6r=1)QayrTBBBw%5H}mx{KQHt0G2G8|0j3X< zGepiXIV0qZk~2omI5`unf0CRja;C|dA!nAHIdbO7Ss-VToF&F9le0q3DmiQ9tdp}r z&L%lq-6rHbzxS1#*W{d&bHREpS>F{o*W}!g zb4$)0Irij~$!Q^{m7F%_YiE8A=H+C#i|G`mcYiPYzjiBm-^DfQ$0*+01$b{4?qP(|@@!l@Zd%Fbh?UIa_V!SltWf(8Zcsa()GhTu5ii}rcyfWie7_Z8B zHO8wmUW4(PjMrkkHsf^|ugiEn#_KcQfboWmcg1)k#v3!`<6WqO_rOlx9lLmctMCrg&3jf4?^eCM zPxbK*)z5q30Pk*tyq^v64miwv*$D5DqqWO@HSeVp1>V<|cwfsq;WY1kGrZf)wr_d= z!tWwDK7d?QVh;Tve04DX<6GW=zl_Y8lLc9Y@jXnrkaGO!I>_Y7Z6zc*s|Du%z7;qCM@ z8Q6v^lYwox`3m~64R^2YKbCEOz5e@h#{YQq-`kka7gJwIeF61W>YknBr}`GUS$>`4 zr|~rV=XU;tS^gXLAIHz+wd@=}i>KM&qe}MA(cl_MtPICNR#`}9J|Bivm-_xp+`^QwtbIo*9YD`^GpTj!8OO--Du1evT zRoJMuRi&h%N~tF*|Bj6+Wj?4%*u{}ELx{2K4@K275~ zrtuuFNtHjQN!35ANwu%gr21ECQsd8QQuFPa)cW(9)cy;a)ZtmJ%QIK+KhvcCcWBaJ zz&d=g&T-$VNgn=|!TVjB8;Y=$-=vF>sQnLRn*(5ub{r1dK>k{)E81k@|QHJ`vtVW zm!IFhl_uX~6RK%axUTWNqW?gO@^_K3AO2}6-q5&*^0&-Qji29YQo5~4nJ?wv1?^~3 zuB%CT{(Z1QPm_v$w*820&-b!a#%%iu+kVQnpRw()+4gg`J%4Z6=5H-K3zp5_H}?2j z$3B1KI9O}a@Q?Ejd!tFCttO41Xwu{rO_~Z#n*CMY|MT~kb7(w6@^46eP~*F@G->@7 z*7*-ppGTSh|7_~_P`}1@_*ZO)f35L1>Y8Nxb&c=L;#mC+jql9TCD*6x+)FxdlYXuJ zHt9s^)W4*Df%<9cGju8RnL5AcLi>vPbml2h15NtrlP3L)MwdbT3+la8R+E12C7Pc` zov1&kOaJ^^b?FzsNtfRH-MaL?BmI6rm)`$Fy7Vu`y7a$4p*x~W|3^cYKJZr!{uzs- zbo-we(&4jo$wt{J2j!$(|B`XP;V3=1qxt)&&!NoPeC<*CP~|9{{s8TtOMM>2_%dao ztkiRP(NCe=l!x+CKFUu8s2~-h!c>HcQnAn0r8s{xkf4%Oib~Tj^EoTkrv{$JbRi_&CYf>%R+f;|@Qa!3q4X7b?MUAL2HThhfe_C6YX4Ew`rxx^I zQY&grZCJ-GwWId@wwd&YUeFGocWG0maZw8OOgqr+rvm&Iq}h%S?LfaM6{F7Wz_29w z&+S0J4Bgp3!ghEo+kq<3UZh!~%CuJ)UZrYOooY}`sztS_4%MZ4RG%79!+)D~VBXL4 z1N|S$r#(fbzm(-OUY7P8m8S|+kt$JThCSC0^m{0u_J{JBSD)XHJeU8c*$-dNe)u!& zhp%Km{5kf++u0BQJ^SGwupj9LAO0Ep;b++oe}wh^IrhU_X#P>^k5RwC z@%Ubj$G6hXI@wvK!$pr$$bloL|T^e~S7d>eo4T|8I`n z-(a6HPJnTOj1%Id41b#O|BhXj^<0}V-*cZa?4iwQFMa{@{S(xmq`sK?66#B-&tRT! zqxpNO`+CtlxBq=!G;{x!Azgj;t8pIMpZ@3er&;?phJEL&;pg_}?;$)a_o4l1H|If` zI`=6}b6%e31I;ltq2H9|jJl?MPMzli-OtPi`k&_m{bkBR_jx^_d0ty+p4S$dPp=2h zjYForqR#V?=H%x&t{fa!-$xE`T>m2fM$8u({Qll!squ~czADWY%{I*r%`VLz&Hnc@ zKF#4jqWQ&!G@}2Q?#VxX)qiH886?kuJYQw-Z$y#jYYb`qXAEichYV@^pBvI{#NYRQ zqrrETGn{R=VtvkIgyy*~tjvS<7tRHSo#&$c)p!qc@t?oye!aOEW15GtcwY|9^Z23p zFn(x%=<}DEAKUd|&eQ%d=V^bY9J(LYK91=tj_DD{^trE@=ee&L=bH98^|1EQzNVg8 z`^?|hnEG36BWlU;Fw;J);~!wX-eT}QTZWYQHbYVCWrhcd@Vj zz9EhCh9v(8zk~bzhGhK`+CPhV#WOTuk=;?F6IxjoWEr7H#CMcT=0D!HFw3CM>*mk1 zPP7lH^SJ-N45`3+Hh#*G(v&$b&AsM4|7f23gyy+yn&&=YzGKRqt9$yL^P&0BrzR)$ z%>1R>9M9+Uw3}s|_ePozdjjpR%_~H|^B%!8CGL$6dlcOddo|-ctatQ(*sJMZBAd)~ z6{&HE?XYLs@wku_}*_7cAdpg|<%50lw)*!l{ zIp5HIUW1tS;Y`B4)BjHl{^?b&>pU|&a5C<5dj$QSTZ`%U(5JMQs5132?Zr&@+IBzB z%TGT_HrCIabLP4k{OseokJsGuH}p6Aa7WV|1Lyj)JtNd}^`~EoN>fj-E9Wy4^Io!# z%&}3XeMY-^4k}RRexiSqWt`6v^y^R$?N9&nnTm0)4#)FeyI}bF>_k7y-{2T!p3YzR z`{#ML|H9*WJbyykise15VYELpU+6x!70vxSj#9eDc@{II>@DZ$e{D!T8t1wCO~!e= zwpr)SJC9Pe%6b3I+htkxhbxwEj{k@Kn{Ml0GtT{SE}wns^l{Cl>G2*VKkI4k-S_+V3+uuDJ@-A$ z=g!kie?G^BkNiyFcwQsSI-H*in17;8{W{l4vo0*x_OCgH-_JH@*x=WXQvSoo^Spnq z&%Wj;S&mG@c)96Ova{_Sw9ld(UnlM%%)%GV?d*@$1dy*Yi8C@wZ3G@g+|rrddZhqy7bo+}(=|I2xwB|Zoq@K>#Jhqx; z7EJT|UXecZA3TvxbU)Yjmw4t_G}~RF%sw*v&P(~IIF+D+m$>1Jc|SHi7q=NFd9ep+ zH~AXW)Aj7o-Mz#y$83!<$E+EzNwugIRlLM8+n`SkE^d=`^mR=4-*K$}S4{UKPo!pz z>3;Odc^ogyc=Yd;pYU&pGTnD_elU%#%yed0>WMU=|CIhS`dhkBq&ZD<9!)5Jh;3xX zd;b%*|C4k3M?Q;V^N+qFIY0l2GJ=EZOZa}EZD)gw&2~Qb z56%1boYHRA!|d0OCEYdCnfd!9=)OVn#w%zk>^Ie1BLj@jqZ zUBb+A%{F;@Uf$2s`*twfi& zwcaA6HvK!_E~M_a3aJ+s=eB=tPP1Hd|9qo4ZH~PFWzN$OW$vF5%50zWenay-pJ~2s zd(r=m+WEC}`V-mr9~1wRCsO9p)}jA~dk1+UKlaMQx)Xmh{Fn5l)vNtr&YAmhde479 z{>^cGUi)a?kCpTIp!-F0=FN`%kBOh zLVD@1y(0Zn^UU-akbdU>d?G#mS3-IZ!_7J1rXJeEjL$QbdA;@<<{9xf#QDs0f5tek zNoE++l>QW?54;o7&AGmy<4xSH7`Js>s--q*gsdb6hdGw0(JNF33&wq$NPhed?{2@vC>XYQApXY~8eD}&LeD}&LlAj7t=QG_U z&k^f$&-yUFFJb3(%(UN&an1esd>)~Bzek(#o<4`>F6kf6bQkyTMQ6DC{CP%t<_u^0 zzu*jKGtY2$93y5Nnk%mD>p%EJ+I%ZsJ;Pnfd^p>gZkBJ(o!33vnc;8wRmuMCzsm1O zzxte(`@vt8lpn;4pI?~QLtkIYYn$e4#dznwz4xd4>GRq%YySP&?mq5o&3_1KI)ya* zIlOu%ybu3yvu+xNnb-#$;X1Ic}Z_pIKk%E>W*NTi);a_s=n(@H5XF zv9Nv*XW~nHKb-lVPRDrBr`@l$Gdz1qZ=R9P>+27FP?BvQlq^5~!SfwM_3%N-{-qz1 z9Djjx#f8TMB`B!#*DL~I{={qh^ZYZPd0sE>zyHds&x7}2eAb%X+waYP~K3AUC?n{{2 zhY#&f`wQ3ZOZ?Yue>3c9F`uXT&v!vjhd*s++>g5bndV^)q5XlM_K)XX!!vs*^L{u( z)Bg0c`=`46XT~4v_GZqE4{JE%e=^(u6IIuz&zzss_2YglvmM{``oXwQkKa#Jn-nZ|IOxFLCIes73PnJ8N9@bCV@1J=-n(_B3>wDI>NPWus zo@bzE?k|7gHTRM~bCP<$|CjjN?O&1x-~UVJ`_C(;8Bt?u()}fA`o3S1W}pAd()EAw z%hLS6{bhdt_m`z5!&cfaOY1NB@T+GnKCABD`QbM{YrSY}y~v;K_VCK;0zWBfHUC$-#xpOAdK66H*`?)g;{bJOcy4z&DPw6;g`FrYj z$~=2++>z~t>-+Dv{ik&7{dV4$e#>*_em&$E{8-OLpRo0kb$aGbitg8auA#q$GQa{ruE;d)>A1sqhT*$WrIeKc4b`;o5i^ug{EgrhmAvfBO4T_xZiZt)`#gMpd2v_n`vRL{1TG*5pY$b9B_?hJ8>_d9(( ze0qI&-SK~EhiCRf)9>Q{hIez9I4>Okm+*7{vkzXlPB84__W9DK%-5cwo@2knJAbxg z+Ar=G?uD1|*Igr7|KEM?dBMFN+vbI9-&5`W!aaiNf2;Re&&_@2`G)t>Pu1(Wvmn#{ zb~y{ZaPD8m@+WQWyOekSZ24k8e=c;fpT8H%c70~;r~BcvRoWlU!nB*`oY&rKn(LSO znZEhimO1ymm%Ja=uZ#QqoxqDdW||lK{dauR7x%;G!xwk)V!n`pWj>7IOWcQZ4#S=q z!`?>Xte$VyaC6C|ootc@>YsK=;>@=&Fa?X1<-4AQ`#sA}R zFa4%?S@!vR+OJdB5W~)WP4kmFUoUO&^mv`H4$t&8-Ot^R((i@ym0@qVUNPMKF2XZo z{k3iKMsB8kXzw?Q_u4R~>riHYf6CgMWj`~w=>ARH`?Vau>wbQ||8AT7ZkzlL9s@*s z^?zz`sP2+ShhI%x>#>QplGTu+w^w?@qWN4$i%0XvHBVgI#MIDItzH@9wm!3}N?uD` zsXL$Q_UrbtmMYz?YDTlF27PKj`M%-H<@XKVlYdX{RxiAdMn2ca`GT24zl$iTi)+}zvKPhm-{d8US7YvdU^En zV$(wjfYHGd-d?#7e+@MnEL>p9q32OF#EQ)@YOkW_tZH8@e{4b_=GmK@rorTVW_ zd*^6r>#@1sOzDH5y4YDMsA$p z8>e#Pblf=YH;(j;BX#3Q-nhm$uF;LdcjIu~IOH4q^^JXeV;|nw2RHWqjlFkc@7~zk zH}>X@y?SG>+}KMu_QH)lf8#3Nxbipl+>I-J<6=J18&}}Q<-2hyH!jzWJ$_@4-8dMz zd}Gh3euwI}ALPh!S2}JZ$F1kMDIGV_<0f!iZ;$KnaqT~@ZO2vpxSSm)^}`&{ z@v%2N_UgxO@z_lrJFR1*cWk7Ojl{89JXW*EO6yp%9E+17 zh*94eW!Xq~jkMozFAVqCa1RWnXee1j@fog-;i?)|w_({E^2CrMhV0XK9(^0uH`n@P zp^qkdcd56hdSjamm_ zZRpXQ9&qacyYA`f?yT-k>u#5>>~&?WE7!Wx(XL|JRZtsdwP8#fdbPns>sPd1Ny}bo z$&!{>YKfYbNNNd}7Mp6Zq2~5#%C)8_>fWYqC+fDWZbRxOs&2gMda5q>>T;zn$Lf5i z&PVFJuFkXSXrx{()T^L6T&M$C?T6G_T&;Q3npLfK)ofA?a=t2R;93n>RexLc=TzT9 z^<`9FT=gzhMOIxU)!9{@3Ds#;9d*^dzgw;DR-EgOyJh-rvAko3wwJ7r7LR6+rjI6%#*eNZ zjb19=Tst21U&`Oi){i=m+K*a~>W|8gia&n!DE=t&&$jPzJ)S#W@>#DeiZtt%1;JvY`G6?ypOAoQ}3}pUcEevFuS@Ukv zzncV(lkIUNpW3~vyJ6ti+#Q?NW21TGbnQ)!)yk=zxIUKJr*UXPDi+g-D9YR%@y#Qd%iKPJ4V)^K$U#gD<|(Y-l(Q%7&|s4R~5 z?5UL-9PQzwZFIE8POW60iWuwIsZ=c(^DEV(*28YPnsIKl(GlLmalc#37X_Tu*xpbFY8YPQSEZ-%QM!{+1 zyGE{MWGhB4U}O{{(>BuluW6)1cX8%!i<}y}(OtZJ7tfy>o1PJ`oti<95la}+i4h&$ z#k!})Bz|hlXkJ|#!JHBF8I0hM8o{O!*c!g75$GHKs^Mb>y^Y~*7@n=+nHZjtYW|xy zJYK^Sz6*DaUBOW7r)nTaMNf^wjB2W#nPK1Eg}jE{W?08}!T71_FB+DsQzOwbETvN; zRy{SM8GXOfcdUqSr*BuMhBtlZPoElY*Quej?tD{y>ChKeeeSyRS@c=;RNp!EsjN?` z`lNN|De05QsXmtPl%_s(>qFJ8R<3;?xUXJy+Cog;U)=q0*WaY5moaz?)skU2CWjz%- zRh-3BZ5+{KyHo9odvfit$?8#$9&za5oE~-^Rtr5)KdgFsz^nULr&=j?s^w<7C$4+s zQ!Si|25i(B-TyFSWh%RNVzm)onrB z4z&65R9%O)wd*jQXv=}N7;4k$sX8ra*A8vA&}MCIy3?i!ZPe5zer>!zRmU4`#Pr?O zsXXpIazhaRcGYTtsQ#Gp_kUuZY{ge zlGRgH_Gt0mq21HMb1jnB!aFV8KC}i}psfWRTBvfW3`bh9rUh)8zomIMns0lm^n98> zqOQIN{pv1r zs8-c&SKU@l4Oiw=^(+omm%6DKise-Cjnwt-)Cok?)wQ~ssH>|(dBYyI9m*AT*;W@@ zbGaHSXI`*p*Ssj%Q1&exBQMXa`%Bc?br*bc) z4kzl6|1x4zQF}X;jgs9QvIDi7N=@4pjHQJda9_o{!Z`X{QN#|gLUbE-ba zAr@ENbJaao-A+|mAEHH7v8k@vsqHGN&feYHr#fq@GkGe-y{gl%I+};bl7l&?I_9dQ zraHJFrd9`*YYVE@v}#$Yvh{AazT1{gC41#=$@A3WZm~V?0>`cG)LchT^-1Vdcf0T8 z<(-^54DuXl@l&O2r##1AGriE%<$|{M zYU`}lUuyY;mdk4Kgcgoyp_~@9Ysyq}lr+1dIRct3rSAIbwymzy>N=wKT57wZ)?;ej zu2v>$vZ5x^YMk5kO7*%_r>r_0cRT*uQk}EAMZ-{1rVx!VJ%tF;z7+d)|>&&(bB9jbu>^%9AYiCEUW33nsTa% zyy_3D-kR!lt9oR%|clH{_wjv5W`k*B`0&)BTB%v75e)PX~vBs6bST{Tq2 zr7A1KcYU{(jebhErgg8ZbHVMEbat?-rOmxsA$eRCkE7%}tKBHPTszH6b)RPrGb)fX3>fhEx%Sh?qh18Wt8L2f3$3j=tfUlbyq-R ze_!p@;Xt)z?p98X??A{bj!qs^2X{N~v6MRIm1Fk$s7wuRJiCk@ZtH=uCg;@am6~1N zt!uh}reE!}!9eq`)%{FeyN#+Q#^Kt{9e`J}RjjyIL(8-NbRZKlS|{u|GWK#>RYTq;p2fX~-5m+tihi){SaWyXq~d&iUQWd9(#|ZZorv z#uaq!F-k?lmD0R!qh2$Ter?ZnK6G3Zj8tFezSFa-{@LBidTfr4j*b!9>cN6;OKa1t z*0LV0L8H1b3M(VE*LMz`?^ShOt93<9xYT<1xXY=*`rTrzt;5DdG1eX}J2ghiL3STx zQWOEApeU$eUwhyVnDQxXhIVy9o?GCop!L~fu z76;q>V9OtDxr2@V>4PnKuq6(**ufS(*un=}=wNdnY_5aNaj;nrHu+%P9ju#!b#<^V z4%X{~b$YOl57w)Lb#Sou4mLUq2g~+g*&HmZgJpTJ%nz39gJpWKOb(XO!E$x5v=5f% z!BRh1DhEsHU}5~+!IC*xQU^=oV2K?pk%J|4umlbk-@zKY_4aSQy<2bh*4w%D3~xPy zTTlPiL!aucw{q)o-+Gi=kK@*3zx9@Hy`@`^<<=wLx|g@^#jSgG>z>}aN4M^)TX*Hw z-M@9aZ{4n2xBb>_xm6msO6^wh-74-|#eVAw+`59dF8{4_aO=$8Ix{!>;?2Hrv(Mk` zgE#xY&E9|0x83wDH+}i0x4r4DZ+elNUf`zZyXkpuddf}Di9!{H3JPTuN+=XjD4>u> zA%{X1g$xR56jCT8QAnT=M6kI4UX9o&) z6l^G1QLvyOBfm#}hx``#4f1Q`SI94sUm!n6{u=oi@>Ap|$d8d9A%BJZ5cvV}edK${ zcaiTP-$uTLd=vQw@^$2E$XAiCAYVqlgnSYC0`hs}bI50r&mf;hK81V|`2_ND&=pTOc<_?i#rna#Q3c$c>R3A$Nt`5V-+zedKz`b&=~J*G8^|Tobtla&_ct$W@W6 zAXi4Ngj^B10&;oea>!+o%OICVE`?kYxdd`?fdXe=Y>qb^V)`hGSSqHLqWNpY=k+mQz zBeO?lhs+k44KizFR>&-oSs*h<<{Ft9GE-zG$c&L0A#;Vy5SaloePnvbbdl*G(?+I+ zOcR*~GIeBX$W)Q3AX7%BgiH~c0y24Ia>!(n$sm(PCWTBAnFKO%WMarfk%=G^Mka(z z5Saineq?;ec#-iS<3>h7#)XU%83!_UWNgS-k+C2nBfUp@hx8Wd4bp3*S4c0BULZY3 z`WopO(o>`-NRN>oA$^7P5a|KZeWZIxcaiQO-A1~FbQ9?Y(siV3NLP`rAYDefgme+< z0@8V;b4X{A&LEveI)!u+=>*boq+>`&k&Yl8MmmIa5a|HYex!X!dy)1a?M7Nb+J&?e zX$R7Fq-{uBk+vW$Beh3rhtw9S4N_~QR!A+8S|Bw?>KdsTQd6WRNR5#iA$5h+5UBxD zeWZFwb&={I)kdm?R1>KNQgx(iNL7)lAXP@Hgj5l!0#bRTa!6&7${>|SDuq-MsRUAS zq+&=#k%}M{Mk<6<5UBuCex!Uzd6DuUq55 zNQ{vfA#sJo5Qza2eI$BFbdl&F(MF<$L=%Yy5_KeMNK}!iAW=r5ghUaE0up&7a!6#6 z$RLqMB85Z}i3AdHBw|QJk%%A>Mk0hn5QzX1ek6QIc#-fR;YLD1!i9tr2?r8(By31n zk+2{kBfdv`hxiup4dQFWSBNhWUm!k5{2K8Y;#0&Yh>sB;A%2DU5b*)xeZ+f+cMAYMkigm@A00^)hZbBJdV&mf*gJcW1?@dV;=#AAp@5sx4q zMm&Ug5b*%we#CuNBeq9uhu9Xe4PtA=R){ST zTOc+^>>9BdVpGH>h>Z~&A$En>5U~MbeZ+c*brI_z)<&#_SQD`ZVs*r7h*c4*AXY}K zgjf-=0%Cc@a)@OS%OI9UEQMGSu>@jq#A1j=5sM%eMl6I_5U~Jae#Cr;c@gs<=0;3G z%!QZ}F$ZFH#B7LJ5wjpBBf3X)hv*j34WesASBNeVT_8F~^cv9_qEkdCh>j5*A$o=A z5YYjmeMEbRb`k9$+D5d6XcN%}qIE=Th*lA;AX-MWglG}b0-||DbBJaU%^;daG=*pq z(FCG#L}Q3X5se@kMl^(I5YYglenfqUdJ**?>PA#S)P<-MQ3s-SL~V##5w##HBeF+i zhsYL@4I*nqR){PSSs*e;rh>Q^#A##Pt5Rm~QeMEYQbP?$w(nh3(NE49; zB6UP+h*S}&AW}x8gh&yQ0wQ@ta)@LR$sm$OB!x&4kpv=fL}G|U5s4rYMkItt5Rm{P zenfnTcoFd+;zmS4#D$0x5eFi6L~Mvy5wRd5BfLj=hwv8R4Z>@LR|qc=ULZV2_!{9E z!c&AN2#*mSA$*1K5a9vBeS~`mcMXKO za|mY<&LEsdIE8Q$;RM2QgkuOt5sn}nMmU6U5a9sAeuRApdlB{^>_%8Y*oCkYVF$u? zgl!005w;*KBeX|ohtL+G4MJ;#RtPN-S|Bt>=o+CJLQ{k$2#paMA#{b%5TOA=eS~@l zbrI?y)JCX_RD1}fGp#(y4gklIq z5sDxbMks_(5TO7Q)12#ygPA$W!05WxY0eFS?5b`k6#*ha90U=zUxf^`II2v!lS zAXrAQgkTZD0)lx2a|mV;%pjOXFoj?e!32VF1Y-zB5sV-hMlgh65WxU~egu68dJ*&> z=tfXM(1oBAK?j0%1Z@af5wsvEBd|wchrkwr4FYQfRtPK+SRgP*;2MD$0#gJg2#gUJ zA#jDj5P<;#eFS<4bP?zv&_ji!G8t+5dH!DefWFucj52A--f>h ze-r)&{B`(i@K@olz+Z;H1b-3!0{nUSbMR;3&%mFCKLvjh{sjDS_+#)#;g7%{hCc*< z5dHxCe)xUxd*S!M?}lH2-vz%Deh2(^_-*i8;kUpq!?%ZT2j3RH4SZ|(R`4z1TfjGm z?;5@td{g))@QvXc!FL7U5WWF?efWCtb>Zv4*M_eJUlYCte0BJ0@Kxcfz*mN^1YZ%p z0(^P+a`0v0%fOe0F9lx`z65-6_+s!y;fuf*hA#wP5WWC>e)xRwdExWG=Y~&#&jp_o zJ_meu_-yc5;j_Re!@Gxf2k#c%4ZLf3SMV<3UBEks_Zr?Ayi<55@Q&df!FvVo5Z(d2 zeRzBDcH!;7+lIFVZxh}IymfeM@K)iiz*~m51aA@E0=#*6bMR*2&A^+6HwAAJ-UPgH zcw_KJ;f=r>hBpLn5Z(a1et3QGdg1lJ>xNf>*9ET=UI)B(cx~`n;kCdk!?TBH2hSFs z4LoajR`4w0S->-g=Ng_FJX3fk@QmRZ!E*)A5S{@%eRz8Cbm8g1(}t%7PZOR7Jau?# z@KoWcz*B~&1Wys30z7$ma`0r~$-t9_Ck0Ouo&-E`cw+EG;fcT#h9?A15S{=$et3NF zc;WHD=k;jzFY!@Y-l2lp244cu$ES8y-kUcfzv`x@>U+*7zG zaF5|0!F>hy5bgooeYksYcj4~9-G;jbcN6Xg+;zBXa9823z+HyB1a}ec0^E7Hb8u(j z&cL09I|X+V?gZR%xMOff;f}x^hC2jz5bglnez<*bd*SxL?S@-{+Xc51ZU@|UxNUG- z;kLjnL)k;wLD@ptKv_dsL0LjsK$%0ihBAXPg))IMhBAV31!V|j0HqJ52c-+81Eme6 z1*Hk40i_P52Biw60;LS41f>Y203{D42PF$710@Y51tke30VNJ41|l&^Z zTvNCvaE;*_!F2`K5Uv4SeYkpXb>Zs3)rPADR}-!VTy?l=a8==|z*UB;1XmHR0$h2x za&Tqg%D|O|D+N~)t^{0hxMFZc;flZ&hARYD5Uv1Rez<&adExTF<%Uav%LSJcE(ct8 zxNLA);j+Lb!?}lZ2j>>f4V-H@S8y)jT);Vp^BT?>oKrX_aE{>|!FdJe5Y7RdeK>n? zcH!*6*@m+PXA{l_oOL*Ba8}{0z*&Z~1ZNS>0-Sj`b8u$i%)pt3GX-Z7&IFusIAd@| z;f%l;hBE|b5Y7OcemH$_dg1iI>4sB*(*>s!P6wQJIBjrR;k3Xh!?A~B2geqU4IFDY zR&XrgSimud;~I_`98)+ZaE##?!Epu05RL&HeK>k>bm8d0(T1Z1M-z?)9CbKqa8%)_ zz)^;y1V<5$0vvfba&Tnf$iR_?BLznijszTWIAU-_;fTNyh9d+=5RL#GemHz^c;WEC z;f6zj!v%*E4hI}|IBalO;jq9V!@h@o2m2QG4eV>!SFkT(U%){Hk$u#aIM z!F~n%5cUD=eb{@jcVX|q-iEyedlU8s>~+{{uvcNPz+Q&E1bY$o0_=I%bFgP&&%mCB zJq3Fb_5|#4*kiCqVUNHbhCKv(5cUA1X~fd0&IEMa|niHV15W*le&_VY9#{!@7rc2kREr4XkTeSFkQ&UBEhr z^%~Y0tW#Jgu#RCJ!FmPj5Y_>#eOP<2c46(n+J?0SYZKN6taVsxuvTHMz*>g21Zxr2 z0<3vhbFgM%&A^(5H3e%D)^SYxn8VU55VhBX9h5Y_;!epr35dSUgz>V{Q;)di~) zRtKzhSZ%OcVYR?2!?K5E2g??g4J>O|R)fL*7H)LEb{% zKwd*$L0&>$K%PUshCG8jg*<^ghCG6N1$hX00J#sj2e}Km1Gx>k1-S{i0l5yj2Du8k z0=W#i1i1*g067mi2RREl133*j1vv>h0XYsi2002j0yzvh1UU#f0ND@O2iXhR1KAB( zf$W0pgzSK9hirpvg=~Q=i~U~gcVfR4`;FMI#eOCBOR-;w{aoy?#eOFCQ?Z|j{aEZr zVt*y}L$M!-eP8T*V&4_}j@Y-wz9sfev2TcdUF>UOUlsd`*q6n=B=$wIFNl3!>~mtD z75j|Xr^P-c_DQi%h<#k_V`3i_`-s?w#XcnVL9q{ry@8w1i``!Ac4D^`yN%eb#cm~bOR-ys-CXRh#cn2cQ?Z+f-B|2KVs|BW zL$Mo(U0>{aV%HVBj@Y%ut|fL&v1^E3UF>RNR~5U8*p~dn46}ybs zrNu5Kc1f{Ih+SOlVqzB+yNK9@#V#avL9q*nonP#HV&@e*kJ!1zP7yno*g3_{A$E4L zvx%Km>?~p@i|t-)cVfF0+l|<+#damOOR-&u?ObfH#dapPQ?Z?h?O1F_VtXaFL$Mu* zZC`AAV%rtlj@Y)vwk5Vrv2BQLU2JP&TNT@i*p|h%B(_DdEr@MiY;$6p72Ay1ro}cT zwn?!~h;3YKV`3W>+lbhP#Wp0iL9q>ptzT??V(S%KkJ!4!RuNm5*gD15A+~n0wTZ1& zY%O9di_Knac4D&?n~m74#bzZoOR-sq&0K7*#bzcpQ?Z$d%~)(kVsj-nL$Mi%O;+L9q#ljbChhV&fGXkJz}yMiCpA*f_<;AvSigv5AdUY%F3U zi}hZtcVfL2>y22i#d;;yOR-*v^<1p4#d;>zQ?Z_i^;oP&VtpmnL$Mx+bziJ|V%-(% zj##(Fx+T_4v2KWUU94+jT@~w!SeM1RB-TZ-E{JtrtaD}7 zV`3c@>xfu~#X2O`L9q^qwO_1#V(k@ck663KS`llPSUbhqA=Y-Wwu!Y>tSw?Ki`8DN zc4D;^tBqK##cCy1OR-vr)m*Hu#cC#2Q?Z(e)mW@XVs#}}L$Ml&RbQ-nV$~I^j##zD zswGxUv1*7_U94(iRTZm>Se3=9BvwVSDu`8Hta4(N6|0O`rNt^GR!Ol+h*eyyVqz5) ztB6>I#VRCLL9q&mm0zrUV&xSpk65|IN)aoUSUJVYAy#&=vWb;dtSsXHVdyRl6$bz) z2)2&9!^d6YB*f8z-WG8;jm)z^{v-dAf5_kDFY+gOPM(pc za=BfpYg$j{^_@+0|yd{4e3-;!_0*W@emCHaDUPCg@_lK+uU$j9U( z@*(+vyieXE?~-@O+vF|sCV7LrPF^Fgl2^#fyWj{T4YVK23eh~Mph-Okd?_wWJR(9>5ueF z`XPOjzDS>>IcY|kk|v}vX+#>5K1c&npY%@Zk-DS~sZDB;nxqEljr2--Aw83xNROlk z(mm;pbW6G+U6Zazm!u2QIq8gaO8Q4SAsv&BNQa~Y(mrXAv`g9{ZIiZ0o1_iWI%$ox zN?IW;la@$}qy>^6$(Q6q@+NtaJV|nrj3gyVNMe$RBqVu|1SCGmox~$?NgNWJ#3C_C z43ZnkmE=NlCOMHDNe(1?k{!vGWJ9thS&=MB79?|$8OfC7k7PnJCK-_oNd_c+k{(Hy zq(jmsX^}KZ8YFd+8cCI;LQ*CvkrYV^#6RLM@rU?L{33o5=foLtN}LeK#1U~w{2&g9 zed0T@N9+%=wUDshFlOk5%^5*LVmL|>v0(VOT+^d!oO zGNP0yA&QA2qLAo86cG7DcOs9-C31*tB8$i*GKg+OSE38indn4xBsvi7iFQO=q7BiS zXhpOnS`f{NW<*n>KcWfIm}o>aBpML)iF!m`q7G4;s72HyY7o_lYD86{3Q?J;L{uay z5dH|igdf5;;fwG|m=k7%DPckw6Gns~;e#+B^a<~T9-&L<5ZZ(mp-E^E-UzRR7s4~) ziSS5xAlwt~2)BeA!ZqQFa7nlzoD8>^T>FlJQ5x;kBCRe;Bn(|<#FM0=5gY2@M#<%cId;|Z6f5pGxpYc!l zNBjf+9)E|w#oyqs@mKgu{006Te}+HB|HGf)kMT$NL;L}LAHRp+#qZ#^@mu&!{04p< zzlLAMui%&QOZY|n0{0*HFZU1kH}@C!C-s3->ek6Za$c1NS}m9rrEw4fi$o7563g1@}4k8TTpoKkgImW9}pF zL+%6aeeON(UG5$3ZSF1ZP3{fub?!CpRqhq;W$q>JMeYT>AKn-5gZIXJ;XUzkybLeJ zOYma62rtBY;01U--W|`wbMYKJ8_&Ws@eI5h-WBhHcg8#69q|r$d%PXq7H@;M##`Yn z@fLVDnaOb!)+$ruK?gV#?JHj2}4siRpJ=`vC2e*ye!foO~VHDTbvEf8fS&G#983Xab`GEoIjii&KPIJ|Dwkk;Pi2N zI9;3$P8+9%)5K}u)NyJ!Rh$Y=8K;C(#3^9^u)o+J>^Jrc`-z=nXV@urf*oT=*dg`< zJHYm_@7Nx;i|t_B*cP^lZD8N9uh10!1`f*u|8ODtQXc3 zE62*PQmh0k#)_~)tOr(r!LqR|EECJXx?x?hE?8%*6V?&yfVIckVQsNC zSZk~m))H%hHOHD^O|ky4CRk&v5!MiEfYrz9VRf-OSZ%BpRuij%RmZAfRk12qWvmib z5vzdt!~9}?FyELj%qM1!nPH}w31*BLVTPCw%mCBJykmNpE~bNNV_KLdrh$3GykcH3 z&zL97Bjy2fkGaF#Vs0?km@CXB<^pq$Im4V{{$Wlq$Cx9`A?5(HkJ-cQVsshq1-jV5~7#7)y)=#vEgYF~#`9m|%=CMi@hk z0Y)FAhtb98V6-t>7)^`@MjfMuQN^fWlrc&eMT`QsAGa^J54ShB7q=(3oLj~%<(6=Z zxkcPUZVzq&H=o;`o5#)N=5VvQS=>x+2DclxE4K@`Gq)4BBew(p$F19r+m_pg+nU>o z+mhRY+nn2s+mzcMw+Xi~w-L7?w*j|4w;s1Hw+^>9w-&c1w+6R5w;H!9w+gp1w-UD^ zw*uE6*Du!(*EiP}*C*GUYsNL@nsAM|MqER#53T`MpX;5g$JOQPaJ9KwTurV9*BjR> z*9+G(*Av$x*8|r**B#d_*A3S-*A>?#*9F%(*BRF-*FUZku4Aqvu0yT^u6?dOu3fGj zu5GR@u1&5Du63?8u2rrTu4S$zu0^f|E|uWE@v($E=Mj0E_*IJE?X`eE^96;E=w*8E^{t3 zE>kXlTqaz`Tt-}mTn1eFTzXu(TsmCZTv}Y3TpC>JTxwjZTq<13TuNMuTne0joWGnu zoZp;ZoS&R?&Kc*FbHX|19B~dgKR5@Rea?5z9%q-c!`bF+aW**{oNt`3oG+ZuoKKvO zoDZD$oOhhJoHv};oL8KeoEMzuoM)V;oc}maIFC7xI1f1wIQKdCICnXBIJY^sI5#;r zIM+GXI9EAWIF~t>I2Sn=IQ=+%Iej?2IlVYNIpv%(PAR8^Q_Lyi6moiS3OMbR&B@|qaxysGI9)kiIGs72I2}11IPE#@IBhv?IITIYI4wCXIL$fDI88bIahh-% za~g3PavE^zbLw&Ga_Vqub82yFa%ym@bE5Aar|=paC~!oaeQ*j zIc6MFjtR$@W5hA!_~00D^f}%+dK_Jj4o91##nI$waJ+H6a=dUnb3Ac8ay)R{bKG&< za@=rSb6jy;a$InnbDVLUa{S{s;W*|v;yC0u;MnKbiP1xO4D0xEve~HV2D? z$-&@o<8bA0;c(_~;&9|};IQYg-@%wfb~$YH>t z&!NYm%b~-e&7sAi$)Ula&Y{Mk%Avxc%%Q}g$f3ag$NtOy!~V_w#s8mfpR>={r|c8< zG5d&p$o|1TVDGcPv-jA$>>c(tdyBov-e7-Ye`SARe`bGTe`J4Pzh}Q=zh%E+zh=K; zzhu8)KW9HNe!_mte#Cyre!#xZzQ?}HzQexFzQw-DzQMlEzQ(@FzQVrDzQn%B zzQFFs?#u4O?#=GS?#V7^m$6IPCG28$5xbDxgI&PRXLo1kv2)ou>}+-xJCmKk?#AxQ z?!xZO?!@lM?!a!(ZpUuRZo_WPZpCiNZozKOZpLoP?vLGs-I(2o-H_dYU7uZ#U6);l zU7KBtU6WmdU7cNxU6oyhU71~pU6EaZ?T_u3?T77~?ThV`ZO%4ho3c&V#%v?DA=?Mr zfUVE=&emh=vUS+nY%R7XTZ8S5?Un6??V0U~?UC()?Vjz9?UwC^?V9b1?UL<+?VRn5 z?Ud~w+X>q-+Y#F#+X34?+aB94+YZ|{+ZNj<+XmY@+Zx*{+X~w<+Y;L%+X9;(n=hLW zn>U*mnkcCpZ}@a#$)5MaoE^wEH)+^gUyZ2mCc3CnazpK zkOX9-A(k4x2Wc7MmuU z2AevY8k;Jc3Y#*U5}P8M0_z{^FY6EMH|rPcC+nPb#yVx4u#QA69QxFIG=h zIjf9S$|_+Mvx-=StRAcaRz9mcE02}S%3)=*vRIj{3|2Q*S5_BRXI3XxM^*<`dsaJE zTUHxZYgQ{(OI8b3b5=7}Q&xYhCalJ+My!Uc2CVw5daSyvI;`5PTCAF^8m#K9YOJcP zDy+(^O00^k3M_vtzbrp2-z;A&pDc5h8OxMq!ZKzVu?$&0SOzS8mUosOOP8g?(q?I~ zG+7!fZ!E7YFD%b2Pb`lt4=ndAcPzIoH!RmIS1gw-7cA#2XDp{I|5#2~j#-Xa4p|OZ z_F48=c3E~+nAR#{e9mRXiq7FiZp{8)Thd|13$yjVP0{;wsY*}nrtXZsB zELkjA%vsD>Oj-P~n6MbL7_k_#7_jKG=&|Us=&)$BXt8LrXt1cWsIjQBsIVxrD6uHA zC@}vq|1$qDe=~nEe=^URXUtRP3G-2{nctav%w6UVbDO!v++=PrzcIfu zzc4>DKQTWtKQP}j-!b1Z-!NY@Uol@YUof9DpD~{@|6@L3K4v~*K4d;%-e=xp-eull z-e%rn-elfjUT0ooUS(ckUS?imUSwWi_G9*C_F?vB_G0#AmNUzkrOXm$F|&wS$n3!^ zVCFNsGxM0a%p7JmGmDwY%wTq7c4c;9c4l^Bc4T&7wr93uwq>?qwq~|swq&+oHfJ_t zHf8q5Y{G2JY{YEHY{0C~tjDa&ti!C$ti`O!tii0#tj4U$tir6!ti-Iytibfg^vm?a z^v(3e^vN`5nlVk8CQM_d5z~6qz=>5%DwX`gA2X_sk-X`5+_X_IM# zX`N|}X_aY(X_;w>X_0AxzaM{J{yzM@`FrvAhm0SL1I9k%J7bTr z%h+LTGqxC;j19&&##hD{#%IPS#z)2n#(Ty)##_c4#%sna#!JQv#&gCq##6?Bj3j1G+UjCPE+ zj5dtcj8=@6j24XMjAo3cjQ$u+7>yZ?7!4T>81)(T7f+h?+iVLE<=Z*&Cp_K zGBg<87+x7(7@irP7#Ft{aeSNpC@KPH#qU zO7D-}gx;9mh~ALifL@rgJ5lWtBoqnpxA=*Dy-x*^>M-GHu7_fFTN>(X`T+H@_tCS8N>jqa81h3=W|iSCi^ zf$pB}j_#K3hVGi~itdu`g6^E|jP8`~AKeMvG2Ic}A>9GpKHVPOF5M2@Hr*E8Cfx?z zI^7!GD%}d*GTjp0BHaR=ADu6q51lui7o8`aoK8k3rIXN!=|prwIuAMl9iPsfjz`C( zH_U)mqqZ`v=~Pue-{ zjCM*pp&iqXXos{Pv;*2c?K^FcwoBWgZPT`Bo3stuH`-U)7usjqC)!8a2ikkuJK9^? z8`^8yE80ui3)*wqGul(yf3zpG$FxVZhqMQ@`?PzsyRo3tCW>$GdMtF$Y$ z%d|_hi?j>0ezd-{KD6GnUbLRHa#|U!lvYA3rWMf&X+3BKw0v53S{^NzmP5;?WzjNe z8MJP+uCy++&a_Unj%_|SOMc+q&$$Z2FWQW^=3m_|e+r178;(C}&8X?QeT8V(JchDF1qVbHkIxYD@L zIMX=MIMO)K*wfh2*wWb0SkqY1SkhR~nA4cin9}&8F`+T0F`_Y~F`&_>(WB9&(V@|% z(W23$(V$VMQKM0%QK3<$QKC_#QK0^#{-yq*{-*w-{-mB$�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 jo__{@ogY=_`xVc>&41~?4HiB%&hx498}V7d9OS 3.0' + gem 'rspec-its', '~> 1.1' +end + +group :development do + gem 'launchy', '~> 2.4', '>= 2.4.3' + gem 'redcarpet', :platform => :mri_19 + gem 'yard' +end + +group :test, :development do + gem 'rake', '> 10.0', '< 12' + gem 'simplecov', :require => false + gem 'coveralls', :require => false, :platforms => [ + :ruby_20, :ruby_21, :ruby_22, :ruby_23 + ] + # Used to test compatibility. + gem 'rack-mount', git: 'https://github.com/sporkmonger/rack-mount.git', require: 'rack/mount' + + if RUBY_VERSION.start_with?('2.0', '2.1') + gem 'rack', '< 2', :require => false + else + gem 'rack', :require => false + end +end + +gem 'idn-ruby', :platform => [:mri_20, :mri_21, :mri_22] diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/LICENSE.txt b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/LICENSE.txt new file mode 100644 index 0000000..ef51da2 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/README.md b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/README.md new file mode 100644 index 0000000..e01fd0e --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/README.md @@ -0,0 +1,121 @@ +# Addressable + +

+ +[![Gem Version](http://img.shields.io/gem/dt/addressable.svg)][gem] +[![Build Status](https://secure.travis-ci.org/sporkmonger/addressable.svg?branch=master)][travis] +[![Dependency Status](https://gemnasium.com/sporkmonger/addressable.svg?travis)][gemnasium] +[![Test Coverage Status](https://img.shields.io/coveralls/sporkmonger/addressable.svg)][coveralls] +[![Documentation Coverage Status](http://inch-ci.org/github/sporkmonger/addressable.svg?branch=master)][inch] + +[gem]: https://rubygems.org/gems/addressable +[travis]: http://travis-ci.org/sporkmonger/addressable +[gemnasium]: https://gemnasium.com/sporkmonger/addressable +[coveralls]: https://coveralls.io/r/sporkmonger/addressable +[inch]: http://inch-ci.org/github/sporkmonger/addressable + +# Description + +Addressable is a replacement for the URI implementation that is part of +Ruby's standard library. It more closely conforms to RFC 3986, RFC 3987, and +RFC 6570 (level 4), providing support for IRIs and URI templates. + +# Reference + +- {Addressable::URI} +- {Addressable::Template} + +# Example usage + +```ruby +require "addressable/uri" + +uri = Addressable::URI.parse("http://example.com/path/to/resource/") +uri.scheme +#=> "http" +uri.host +#=> "example.com" +uri.path +#=> "/path/to/resource/" + +uri = Addressable::URI.parse("http://www.詹姆斯.com/") +uri.normalize +#=> # +``` + + +# URI Templates + +For more details, see [RFC 6570](https://www.rfc-editor.org/rfc/rfc6570.txt). + + +```ruby + +require "addressable/template" + +template = Addressable::Template.new("http://example.com/{?query*}/") +template.expand({ + "query" => { + 'foo' => 'bar', + 'color' => 'red' + } +}) +#=> # + +template = Addressable::Template.new("http://example.com/{?one,two,three}") +template.partial_expand({"one" => "1", "three" => 3}).pattern +#=> "http://example.com/?one=1{&two}&three=3" + +template = Addressable::Template.new( + "http://{host}{/segments*}/{?one,two,bogus}{#fragment}" +) +uri = Addressable::URI.parse( + "http://example.com/a/b/c/?one=1&two=2#foo" +) +template.extract(uri) +#=> +# { +# "host" => "example.com", +# "segments" => ["a", "b", "c"], +# "one" => "1", +# "two" => "2", +# "fragment" => "foo" +# } +``` + +# Install + +```console +$ gem install addressable +``` + +You may optionally turn on native IDN support by installing libidn and the +idn gem: + +```console +$ sudo apt-get install idn # Debian/Ubuntu +$ brew install libidn # OS X +$ gem install idn-ruby +``` + +# Semantic Versioning + +This project uses sementic versioning. You can (and should) specify your +dependency using a pessimistic version constraint covering the major and minor +values: + +```ruby +spec.add_dependency 'addressable', '~> 2.5' +``` + +If you need a specific bug fix, you can also specify minimum tiny versions +without preventing updates to the latest minor release: + +```ruby +spec.add_dependency 'addressable', '~> 2.3', '>= 2.3.7' +``` diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/Rakefile b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/Rakefile new file mode 100644 index 0000000..ffdcb8c --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/Rakefile @@ -0,0 +1,32 @@ +require 'rubygems' +require 'rake' + +require File.join(File.dirname(__FILE__), 'lib', 'addressable', 'version') + +PKG_DISPLAY_NAME = 'Addressable' +PKG_NAME = PKG_DISPLAY_NAME.downcase +PKG_VERSION = Addressable::VERSION::STRING +PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}" + +RELEASE_NAME = "REL #{PKG_VERSION}" + +PKG_SUMMARY = "URI Implementation" +PKG_DESCRIPTION = <<-TEXT +Addressable is a replacement for the URI implementation that is part of +Ruby's standard library. It more closely conforms to the relevant RFCs and +adds support for IRIs and URI templates. +TEXT + +PKG_FILES = FileList[ + "lib/**/*", "spec/**/*", "vendor/**/*", "data/**/*", + "tasks/**/*", + "[A-Z]*", "Rakefile" +].exclude(/pkg/).exclude(/database\.yml/). + exclude(/Gemfile\.lock/).exclude(/[_\.]git$/) + +task :default => "spec" + +WINDOWS = (RUBY_PLATFORM =~ /mswin|win32|mingw|bccwin|cygwin/) rescue false +SUDO = WINDOWS ? '' : ('sudo' unless ENV['SUDOLESS']) + +Dir['tasks/**/*.rake'].each { |rake| load rake } diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/data/unicode.data b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/data/unicode.data new file mode 100644 index 0000000000000000000000000000000000000000..cdfc22418a51396f2b89cfc1afb2c892b30d7e3f GIT binary patch literal 115740 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 'text/plain'}, 'Route 1'] } + end + let(:app_two) do + proc { |env| [200, {'Content-Type' => 'text/plain'}, 'Route 2'] } + end + let(:app_three) do + proc { |env| [200, {'Content-Type' => 'text/plain'}, 'Route 3'] } + end + let(:routes) do + s = Rack::Mount::RouteSet.new do |set| + set.add_route(app_one, { + :request_method => 'GET', + :path_info => Addressable::Template.new('/one/{id}/') + }, {:id => 'unidentified'}, :one) + set.add_route(app_two, { + :request_method => 'GET', + :path_info => Addressable::Template.new('/two/') + }, {:id => 'unidentified'}, :two) + set.add_route(app_three, { + :request_method => 'GET', + :path_info => Addressable::Template.new('/three/{id}/').to_regexp + }, {:id => 'unidentified'}, :three) + end + s.rehash + s + end + + it "should generate from routes with Addressable::Template" do + path, _ = routes.generate(:path_info, :one, {:id => '123'}) + expect(path).to eq '/one/123/' + end + + it "should generate from routes with Addressable::Template using defaults" do + path, _ = routes.generate(:path_info, :one, {}) + expect(path).to eq '/one/unidentified/' + end + + it "should recognize routes with Addressable::Template" do + request = Rack::Request.new( + 'REQUEST_METHOD' => 'GET', + 'PATH_INFO' => '/one/123/' + ) + route, _, params = routes.recognize(request) + expect(route).not_to be_nil + expect(route.app).to eq app_one + expect(params).to eq({id: '123'}) + end + + it "should generate from routes with Addressable::Template" do + path, _ = routes.generate(:path_info, :two, {:id => '654'}) + expect(path).to eq '/two/' + end + + it "should generate from routes with Addressable::Template using defaults" do + path, _ = routes.generate(:path_info, :two, {}) + expect(path).to eq '/two/' + end + + it "should recognize routes with Addressable::Template" do + request = Rack::Request.new( + 'REQUEST_METHOD' => 'GET', + 'PATH_INFO' => '/two/' + ) + route, _, params = routes.recognize(request) + expect(route).not_to be_nil + expect(route.app).to eq app_two + expect(params).to eq({id: 'unidentified'}) + end + + it "should recognize routes with derived Regexp" do + request = Rack::Request.new( + 'REQUEST_METHOD' => 'GET', + 'PATH_INFO' => '/three/789/' + ) + route, _, params = routes.recognize(request) + expect(route).not_to be_nil + expect(route.app).to eq app_three + expect(params).to eq({id: '789'}) + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/addressable/security_spec.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/addressable/security_spec.rb new file mode 100644 index 0000000..3275494 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/addressable/security_spec.rb @@ -0,0 +1,57 @@ +# coding: utf-8 +# Copyright (C) Bob Aman +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +require "spec_helper" + +require "addressable/uri" + +describe Addressable::URI, "when created with a URI known to cause crashes " + + "in certain browsers" do + it "should parse correctly" do + uri = Addressable::URI.parse('%%30%30') + expect(uri.path).to eq('%%30%30') + expect(uri.normalize.path).to eq('%2500') + end + + it "should parse correctly as a full URI" do + uri = Addressable::URI.parse('http://www.example.com/%%30%30') + expect(uri.path).to eq('/%%30%30') + expect(uri.normalize.path).to eq('/%2500') + end +end + +describe Addressable::URI, "when created with a URI known to cause crashes " + + "in certain browsers" do + it "should parse correctly" do + uri = Addressable::URI.parse('لُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ 冗') + expect(uri.path).to eq('لُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ 冗') + expect(uri.normalize.path).to eq( + '%D9%84%D9%8F%D8%B5%D9%91%D8%A8%D9%8F%D9%84%D9%8F%D9%84%D8%B5%D9%91' + + '%D8%A8%D9%8F%D8%B1%D8%B1%D9%8B%20%E0%A5%A3%20%E0%A5%A3h%20%E0%A5' + + '%A3%20%E0%A5%A3%20%E5%86%97' + ) + end + + it "should parse correctly as a full URI" do + uri = Addressable::URI.parse('http://www.example.com/لُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ 冗') + expect(uri.path).to eq('/لُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ 冗') + expect(uri.normalize.path).to eq( + '/%D9%84%D9%8F%D8%B5%D9%91%D8%A8%D9%8F%D9%84%D9%8F%D9%84%D8%B5%D9%91' + + '%D8%A8%D9%8F%D8%B1%D8%B1%D9%8B%20%E0%A5%A3%20%E0%A5%A3h%20%E0%A5' + + '%A3%20%E0%A5%A3%20%E5%86%97' + ) + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/addressable/template_spec.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/addressable/template_spec.rb new file mode 100644 index 0000000..bd8ab12 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/addressable/template_spec.rb @@ -0,0 +1,1419 @@ +# coding: utf-8 +# Copyright (C) Bob Aman +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +require "spec_helper" + +require "bigdecimal" +require "addressable/template" + +shared_examples_for 'expands' do |tests| + tests.each do |template, expansion| + exp = expansion.is_a?(Array) ? expansion.first : expansion + it "#{template} to #{exp}" do + tmpl = Addressable::Template.new(template).expand(subject) + if expansion.is_a?(Array) + expect(expansion.any?{|i| i == tmpl.to_str}).to be true + else + expect(tmpl.to_str).to eq(expansion) + end + end + end +end + +describe "eql?" do + let(:template) { Addressable::Template.new('https://www.example.com/{foo}') } + it 'is equal when the pattern matches' do + other_template = Addressable::Template.new('https://www.example.com/{foo}') + expect(template).to be_eql(other_template) + expect(other_template).to be_eql(template) + end + it 'is not equal when the pattern differs' do + other_template = Addressable::Template.new('https://www.example.com/{bar}') + expect(template).to_not be_eql(other_template) + expect(other_template).to_not be_eql(template) + end + it 'is not equal to non-templates' do + uri = 'https://www.example.com/foo/bar' + addressable_template = Addressable::Template.new uri + addressable_uri = Addressable::URI.parse uri + expect(addressable_template).to_not be_eql(addressable_uri) + expect(addressable_uri).to_not be_eql(addressable_template) + end +end + +describe "==" do + let(:template) { Addressable::Template.new('https://www.example.com/{foo}') } + it 'is equal when the pattern matches' do + other_template = Addressable::Template.new('https://www.example.com/{foo}') + expect(template).to eq other_template + expect(other_template).to eq template + end + it 'is not equal when the pattern differs' do + other_template = Addressable::Template.new('https://www.example.com/{bar}') + expect(template).not_to eq other_template + expect(other_template).not_to eq template + end + it 'is not equal to non-templates' do + uri = 'https://www.example.com/foo/bar' + addressable_template = Addressable::Template.new uri + addressable_uri = Addressable::URI.parse uri + expect(addressable_template).not_to eq addressable_uri + expect(addressable_uri).not_to eq addressable_template + end +end + +describe "Type conversion" do + subject { + { + :var => true, + :hello => 1234, + :nothing => nil, + :sym => :symbolic, + :decimal => BigDecimal.new('1') + } + } + + it_behaves_like 'expands', { + '{var}' => 'true', + '{hello}' => '1234', + '{nothing}' => '', + '{sym}' => 'symbolic', + '{decimal}' => RUBY_VERSION < '2.4.0' ? '0.1E1' : '0.1e1' + } +end + +describe "Level 1:" do + subject { + {:var => "value", :hello => "Hello World!"} + } + it_behaves_like 'expands', { + '{var}' => 'value', + '{hello}' => 'Hello%20World%21' + } +end + +describe "Level 2" do + subject { + { + :var => "value", + :hello => "Hello World!", + :path => "/foo/bar" + } + } + context "Operator +:" do + it_behaves_like 'expands', { + '{+var}' => 'value', + '{+hello}' => 'Hello%20World!', + '{+path}/here' => '/foo/bar/here', + 'here?ref={+path}' => 'here?ref=/foo/bar' + } + end + context "Operator #:" do + it_behaves_like 'expands', { + 'X{#var}' => 'X#value', + 'X{#hello}' => 'X#Hello%20World!' + } + end +end + +describe "Level 3" do + subject { + { + :var => "value", + :hello => "Hello World!", + :empty => "", + :path => "/foo/bar", + :x => "1024", + :y => "768" + } + } + context "Operator nil (multiple vars):" do + it_behaves_like 'expands', { + 'map?{x,y}' => 'map?1024,768', + '{x,hello,y}' => '1024,Hello%20World%21,768' + } + end + context "Operator + (multiple vars):" do + it_behaves_like 'expands', { + '{+x,hello,y}' => '1024,Hello%20World!,768', + '{+path,x}/here' => '/foo/bar,1024/here' + } + end + context "Operator # (multiple vars):" do + it_behaves_like 'expands', { + '{#x,hello,y}' => '#1024,Hello%20World!,768', + '{#path,x}/here' => '#/foo/bar,1024/here' + } + end + context "Operator ." do + it_behaves_like 'expands', { + 'X{.var}' => 'X.value', + 'X{.x,y}' => 'X.1024.768' + } + end + context "Operator /" do + it_behaves_like 'expands', { + '{/var}' => '/value', + '{/var,x}/here' => '/value/1024/here' + } + end + context "Operator ;" do + it_behaves_like 'expands', { + '{;x,y}' => ';x=1024;y=768', + '{;x,y,empty}' => ';x=1024;y=768;empty' + } + end + context "Operator ?" do + it_behaves_like 'expands', { + '{?x,y}' => '?x=1024&y=768', + '{?x,y,empty}' => '?x=1024&y=768&empty=' + } + end + context "Operator &" do + it_behaves_like 'expands', { + '?fixed=yes{&x}' => '?fixed=yes&x=1024', + '{&x,y,empty}' => '&x=1024&y=768&empty=' + } + end +end + +describe "Level 4" do + subject { + { + :var => "value", + :hello => "Hello World!", + :path => "/foo/bar", + :semi => ";", + :list => %w(red green blue), + :keys => {"semi" => ';', "dot" => '.', "comma" => ','} + } + } + context "Expansion with value modifiers" do + it_behaves_like 'expands', { + '{var:3}' => 'val', + '{var:30}' => 'value', + '{list}' => 'red,green,blue', + '{list*}' => 'red,green,blue', + '{keys}' => [ + 'semi,%3B,dot,.,comma,%2C', + 'dot,.,semi,%3B,comma,%2C', + 'comma,%2C,semi,%3B,dot,.', + 'semi,%3B,comma,%2C,dot,.', + 'dot,.,comma,%2C,semi,%3B', + 'comma,%2C,dot,.,semi,%3B' + ], + '{keys*}' => [ + 'semi=%3B,dot=.,comma=%2C', + 'dot=.,semi=%3B,comma=%2C', + 'comma=%2C,semi=%3B,dot=.', + 'semi=%3B,comma=%2C,dot=.', + 'dot=.,comma=%2C,semi=%3B', + 'comma=%2C,dot=.,semi=%3B' + ] + } + end + context "Operator + with value modifiers" do + it_behaves_like 'expands', { + '{+path:6}/here' => '/foo/b/here', + '{+list}' => 'red,green,blue', + '{+list*}' => 'red,green,blue', + '{+keys}' => [ + 'semi,;,dot,.,comma,,', + 'dot,.,semi,;,comma,,', + 'comma,,,semi,;,dot,.', + 'semi,;,comma,,,dot,.', + 'dot,.,comma,,,semi,;', + 'comma,,,dot,.,semi,;' + ], + '{+keys*}' => [ + 'semi=;,dot=.,comma=,', + 'dot=.,semi=;,comma=,', + 'comma=,,semi=;,dot=.', + 'semi=;,comma=,,dot=.', + 'dot=.,comma=,,semi=;', + 'comma=,,dot=.,semi=;' + ] + } + end + context "Operator # with value modifiers" do + it_behaves_like 'expands', { + '{#path:6}/here' => '#/foo/b/here', + '{#list}' => '#red,green,blue', + '{#list*}' => '#red,green,blue', + '{#keys}' => [ + '#semi,;,dot,.,comma,,', + '#dot,.,semi,;,comma,,', + '#comma,,,semi,;,dot,.', + '#semi,;,comma,,,dot,.', + '#dot,.,comma,,,semi,;', + '#comma,,,dot,.,semi,;' + ], + '{#keys*}' => [ + '#semi=;,dot=.,comma=,', + '#dot=.,semi=;,comma=,', + '#comma=,,semi=;,dot=.', + '#semi=;,comma=,,dot=.', + '#dot=.,comma=,,semi=;', + '#comma=,,dot=.,semi=;' + ] + } + end + context "Operator . with value modifiers" do + it_behaves_like 'expands', { + 'X{.var:3}' => 'X.val', + 'X{.list}' => 'X.red,green,blue', + 'X{.list*}' => 'X.red.green.blue', + 'X{.keys}' => [ + 'X.semi,%3B,dot,.,comma,%2C', + 'X.dot,.,semi,%3B,comma,%2C', + 'X.comma,%2C,semi,%3B,dot,.', + 'X.semi,%3B,comma,%2C,dot,.', + 'X.dot,.,comma,%2C,semi,%3B', + 'X.comma,%2C,dot,.,semi,%3B' + ], + 'X{.keys*}' => [ + 'X.semi=%3B.dot=..comma=%2C', + 'X.dot=..semi=%3B.comma=%2C', + 'X.comma=%2C.semi=%3B.dot=.', + 'X.semi=%3B.comma=%2C.dot=.', + 'X.dot=..comma=%2C.semi=%3B', + 'X.comma=%2C.dot=..semi=%3B' + ] + } + end + context "Operator / with value modifiers" do + it_behaves_like 'expands', { + '{/var:1,var}' => '/v/value', + '{/list}' => '/red,green,blue', + '{/list*}' => '/red/green/blue', + '{/list*,path:4}' => '/red/green/blue/%2Ffoo', + '{/keys}' => [ + '/semi,%3B,dot,.,comma,%2C', + '/dot,.,semi,%3B,comma,%2C', + '/comma,%2C,semi,%3B,dot,.', + '/semi,%3B,comma,%2C,dot,.', + '/dot,.,comma,%2C,semi,%3B', + '/comma,%2C,dot,.,semi,%3B' + ], + '{/keys*}' => [ + '/semi=%3B/dot=./comma=%2C', + '/dot=./semi=%3B/comma=%2C', + '/comma=%2C/semi=%3B/dot=.', + '/semi=%3B/comma=%2C/dot=.', + '/dot=./comma=%2C/semi=%3B', + '/comma=%2C/dot=./semi=%3B' + ] + } + end + context "Operator ; with value modifiers" do + it_behaves_like 'expands', { + '{;hello:5}' => ';hello=Hello', + '{;list}' => ';list=red,green,blue', + '{;list*}' => ';list=red;list=green;list=blue', + '{;keys}' => [ + ';keys=semi,%3B,dot,.,comma,%2C', + ';keys=dot,.,semi,%3B,comma,%2C', + ';keys=comma,%2C,semi,%3B,dot,.', + ';keys=semi,%3B,comma,%2C,dot,.', + ';keys=dot,.,comma,%2C,semi,%3B', + ';keys=comma,%2C,dot,.,semi,%3B' + ], + '{;keys*}' => [ + ';semi=%3B;dot=.;comma=%2C', + ';dot=.;semi=%3B;comma=%2C', + ';comma=%2C;semi=%3B;dot=.', + ';semi=%3B;comma=%2C;dot=.', + ';dot=.;comma=%2C;semi=%3B', + ';comma=%2C;dot=.;semi=%3B' + ] + } + end + context "Operator ? with value modifiers" do + it_behaves_like 'expands', { + '{?var:3}' => '?var=val', + '{?list}' => '?list=red,green,blue', + '{?list*}' => '?list=red&list=green&list=blue', + '{?keys}' => [ + '?keys=semi,%3B,dot,.,comma,%2C', + '?keys=dot,.,semi,%3B,comma,%2C', + '?keys=comma,%2C,semi,%3B,dot,.', + '?keys=semi,%3B,comma,%2C,dot,.', + '?keys=dot,.,comma,%2C,semi,%3B', + '?keys=comma,%2C,dot,.,semi,%3B' + ], + '{?keys*}' => [ + '?semi=%3B&dot=.&comma=%2C', + '?dot=.&semi=%3B&comma=%2C', + '?comma=%2C&semi=%3B&dot=.', + '?semi=%3B&comma=%2C&dot=.', + '?dot=.&comma=%2C&semi=%3B', + '?comma=%2C&dot=.&semi=%3B' + ] + } + end + context "Operator & with value modifiers" do + it_behaves_like 'expands', { + '{&var:3}' => '&var=val', + '{&list}' => '&list=red,green,blue', + '{&list*}' => '&list=red&list=green&list=blue', + '{&keys}' => [ + '&keys=semi,%3B,dot,.,comma,%2C', + '&keys=dot,.,semi,%3B,comma,%2C', + '&keys=comma,%2C,semi,%3B,dot,.', + '&keys=semi,%3B,comma,%2C,dot,.', + '&keys=dot,.,comma,%2C,semi,%3B', + '&keys=comma,%2C,dot,.,semi,%3B' + ], + '{&keys*}' => [ + '&semi=%3B&dot=.&comma=%2C', + '&dot=.&semi=%3B&comma=%2C', + '&comma=%2C&semi=%3B&dot=.', + '&semi=%3B&comma=%2C&dot=.', + '&dot=.&comma=%2C&semi=%3B', + '&comma=%2C&dot=.&semi=%3B' + ] + } + end +end +describe "Modifiers" do + subject { + { + :var => "value", + :semi => ";", + :year => %w(1965 2000 2012), + :dom => %w(example com) + } + } + context "length" do + it_behaves_like 'expands', { + '{var:3}' => 'val', + '{var:30}' => 'value', + '{var}' => 'value', + '{semi}' => '%3B', + '{semi:2}' => '%3B' + } + end + context "explode" do + it_behaves_like 'expands', { + 'find{?year*}' => 'find?year=1965&year=2000&year=2012', + 'www{.dom*}' => 'www.example.com', + } + end +end +describe "Expansion" do + subject { + { + :count => ["one", "two", "three"], + :dom => ["example", "com"], + :dub => "me/too", + :hello => "Hello World!", + :half => "50%", + :var => "value", + :who => "fred", + :base => "http://example.com/home/", + :path => "/foo/bar", + :list => ["red", "green", "blue"], + :keys => {"semi" => ";","dot" => ".","comma" => ","}, + :v => "6", + :x => "1024", + :y => "768", + :empty => "", + :empty_keys => {}, + :undef => nil + } + } + context "concatenation" do + it_behaves_like 'expands', { + '{count}' => 'one,two,three', + '{count*}' => 'one,two,three', + '{/count}' => '/one,two,three', + '{/count*}' => '/one/two/three', + '{;count}' => ';count=one,two,three', + '{;count*}' => ';count=one;count=two;count=three', + '{?count}' => '?count=one,two,three', + '{?count*}' => '?count=one&count=two&count=three', + '{&count*}' => '&count=one&count=two&count=three' + } + end + context "simple expansion" do + it_behaves_like 'expands', { + '{var}' => 'value', + '{hello}' => 'Hello%20World%21', + '{half}' => '50%25', + 'O{empty}X' => 'OX', + 'O{undef}X' => 'OX', + '{x,y}' => '1024,768', + '{x,hello,y}' => '1024,Hello%20World%21,768', + '?{x,empty}' => '?1024,', + '?{x,undef}' => '?1024', + '?{undef,y}' => '?768', + '{var:3}' => 'val', + '{var:30}' => 'value', + '{list}' => 'red,green,blue', + '{list*}' => 'red,green,blue', + '{keys}' => [ + 'semi,%3B,dot,.,comma,%2C', + 'dot,.,semi,%3B,comma,%2C', + 'comma,%2C,semi,%3B,dot,.', + 'semi,%3B,comma,%2C,dot,.', + 'dot,.,comma,%2C,semi,%3B', + 'comma,%2C,dot,.,semi,%3B' + ], + '{keys*}' => [ + 'semi=%3B,dot=.,comma=%2C', + 'dot=.,semi=%3B,comma=%2C', + 'comma=%2C,semi=%3B,dot=.', + 'semi=%3B,comma=%2C,dot=.', + 'dot=.,comma=%2C,semi=%3B', + 'comma=%2C,dot=.,semi=%3B' + ] + } + end + context "reserved expansion (+)" do + it_behaves_like 'expands', { + '{+var}' => 'value', + '{+hello}' => 'Hello%20World!', + '{+half}' => '50%25', + '{base}index' => 'http%3A%2F%2Fexample.com%2Fhome%2Findex', + '{+base}index' => 'http://example.com/home/index', + 'O{+empty}X' => 'OX', + 'O{+undef}X' => 'OX', + '{+path}/here' => '/foo/bar/here', + 'here?ref={+path}' => 'here?ref=/foo/bar', + 'up{+path}{var}/here' => 'up/foo/barvalue/here', + '{+x,hello,y}' => '1024,Hello%20World!,768', + '{+path,x}/here' => '/foo/bar,1024/here', + '{+path:6}/here' => '/foo/b/here', + '{+list}' => 'red,green,blue', + '{+list*}' => 'red,green,blue', + '{+keys}' => [ + 'semi,;,dot,.,comma,,', + 'dot,.,semi,;,comma,,', + 'comma,,,semi,;,dot,.', + 'semi,;,comma,,,dot,.', + 'dot,.,comma,,,semi,;', + 'comma,,,dot,.,semi,;' + ], + '{+keys*}' => [ + 'semi=;,dot=.,comma=,', + 'dot=.,semi=;,comma=,', + 'comma=,,semi=;,dot=.', + 'semi=;,comma=,,dot=.', + 'dot=.,comma=,,semi=;', + 'comma=,,dot=.,semi=;' + ] + } + end + context "fragment expansion (#)" do + it_behaves_like 'expands', { + '{#var}' => '#value', + '{#hello}' => '#Hello%20World!', + '{#half}' => '#50%25', + 'foo{#empty}' => 'foo#', + 'foo{#undef}' => 'foo', + '{#x,hello,y}' => '#1024,Hello%20World!,768', + '{#path,x}/here' => '#/foo/bar,1024/here', + '{#path:6}/here' => '#/foo/b/here', + '{#list}' => '#red,green,blue', + '{#list*}' => '#red,green,blue', + '{#keys}' => [ + '#semi,;,dot,.,comma,,', + '#dot,.,semi,;,comma,,', + '#comma,,,semi,;,dot,.', + '#semi,;,comma,,,dot,.', + '#dot,.,comma,,,semi,;', + '#comma,,,dot,.,semi,;' + ], + '{#keys*}' => [ + '#semi=;,dot=.,comma=,', + '#dot=.,semi=;,comma=,', + '#comma=,,semi=;,dot=.', + '#semi=;,comma=,,dot=.', + '#dot=.,comma=,,semi=;', + '#comma=,,dot=.,semi=;' + ] + } + end + context "label expansion (.)" do + it_behaves_like 'expands', { + '{.who}' => '.fred', + '{.who,who}' => '.fred.fred', + '{.half,who}' => '.50%25.fred', + 'www{.dom*}' => 'www.example.com', + 'X{.var}' => 'X.value', + 'X{.empty}' => 'X.', + 'X{.undef}' => 'X', + 'X{.var:3}' => 'X.val', + 'X{.list}' => 'X.red,green,blue', + 'X{.list*}' => 'X.red.green.blue', + 'X{.keys}' => [ + 'X.semi,%3B,dot,.,comma,%2C', + 'X.dot,.,semi,%3B,comma,%2C', + 'X.comma,%2C,semi,%3B,dot,.', + 'X.semi,%3B,comma,%2C,dot,.', + 'X.dot,.,comma,%2C,semi,%3B', + 'X.comma,%2C,dot,.,semi,%3B' + ], + 'X{.keys*}' => [ + 'X.semi=%3B.dot=..comma=%2C', + 'X.dot=..semi=%3B.comma=%2C', + 'X.comma=%2C.semi=%3B.dot=.', + 'X.semi=%3B.comma=%2C.dot=.', + 'X.dot=..comma=%2C.semi=%3B', + 'X.comma=%2C.dot=..semi=%3B' + ], + 'X{.empty_keys}' => 'X', + 'X{.empty_keys*}' => 'X' + } + end + context "path expansion (/)" do + it_behaves_like 'expands', { + '{/who}' => '/fred', + '{/who,who}' => '/fred/fred', + '{/half,who}' => '/50%25/fred', + '{/who,dub}' => '/fred/me%2Ftoo', + '{/var}' => '/value', + '{/var,empty}' => '/value/', + '{/var,undef}' => '/value', + '{/var,x}/here' => '/value/1024/here', + '{/var:1,var}' => '/v/value', + '{/list}' => '/red,green,blue', + '{/list*}' => '/red/green/blue', + '{/list*,path:4}' => '/red/green/blue/%2Ffoo', + '{/keys}' => [ + '/semi,%3B,dot,.,comma,%2C', + '/dot,.,semi,%3B,comma,%2C', + '/comma,%2C,semi,%3B,dot,.', + '/semi,%3B,comma,%2C,dot,.', + '/dot,.,comma,%2C,semi,%3B', + '/comma,%2C,dot,.,semi,%3B' + ], + '{/keys*}' => [ + '/semi=%3B/dot=./comma=%2C', + '/dot=./semi=%3B/comma=%2C', + '/comma=%2C/semi=%3B/dot=.', + '/semi=%3B/comma=%2C/dot=.', + '/dot=./comma=%2C/semi=%3B', + '/comma=%2C/dot=./semi=%3B' + ] + } + end + context "path-style expansion (;)" do + it_behaves_like 'expands', { + '{;who}' => ';who=fred', + '{;half}' => ';half=50%25', + '{;empty}' => ';empty', + '{;v,empty,who}' => ';v=6;empty;who=fred', + '{;v,bar,who}' => ';v=6;who=fred', + '{;x,y}' => ';x=1024;y=768', + '{;x,y,empty}' => ';x=1024;y=768;empty', + '{;x,y,undef}' => ';x=1024;y=768', + '{;hello:5}' => ';hello=Hello', + '{;list}' => ';list=red,green,blue', + '{;list*}' => ';list=red;list=green;list=blue', + '{;keys}' => [ + ';keys=semi,%3B,dot,.,comma,%2C', + ';keys=dot,.,semi,%3B,comma,%2C', + ';keys=comma,%2C,semi,%3B,dot,.', + ';keys=semi,%3B,comma,%2C,dot,.', + ';keys=dot,.,comma,%2C,semi,%3B', + ';keys=comma,%2C,dot,.,semi,%3B' + ], + '{;keys*}' => [ + ';semi=%3B;dot=.;comma=%2C', + ';dot=.;semi=%3B;comma=%2C', + ';comma=%2C;semi=%3B;dot=.', + ';semi=%3B;comma=%2C;dot=.', + ';dot=.;comma=%2C;semi=%3B', + ';comma=%2C;dot=.;semi=%3B' + ] + } + end + context "form query expansion (?)" do + it_behaves_like 'expands', { + '{?who}' => '?who=fred', + '{?half}' => '?half=50%25', + '{?x,y}' => '?x=1024&y=768', + '{?x,y,empty}' => '?x=1024&y=768&empty=', + '{?x,y,undef}' => '?x=1024&y=768', + '{?var:3}' => '?var=val', + '{?list}' => '?list=red,green,blue', + '{?list*}' => '?list=red&list=green&list=blue', + '{?keys}' => [ + '?keys=semi,%3B,dot,.,comma,%2C', + '?keys=dot,.,semi,%3B,comma,%2C', + '?keys=comma,%2C,semi,%3B,dot,.', + '?keys=semi,%3B,comma,%2C,dot,.', + '?keys=dot,.,comma,%2C,semi,%3B', + '?keys=comma,%2C,dot,.,semi,%3B' + ], + '{?keys*}' => [ + '?semi=%3B&dot=.&comma=%2C', + '?dot=.&semi=%3B&comma=%2C', + '?comma=%2C&semi=%3B&dot=.', + '?semi=%3B&comma=%2C&dot=.', + '?dot=.&comma=%2C&semi=%3B', + '?comma=%2C&dot=.&semi=%3B' + ] + } + end + context "form query expansion (&)" do + it_behaves_like 'expands', { + '{&who}' => '&who=fred', + '{&half}' => '&half=50%25', + '?fixed=yes{&x}' => '?fixed=yes&x=1024', + '{&x,y,empty}' => '&x=1024&y=768&empty=', + '{&x,y,undef}' => '&x=1024&y=768', + '{&var:3}' => '&var=val', + '{&list}' => '&list=red,green,blue', + '{&list*}' => '&list=red&list=green&list=blue', + '{&keys}' => [ + '&keys=semi,%3B,dot,.,comma,%2C', + '&keys=dot,.,semi,%3B,comma,%2C', + '&keys=comma,%2C,semi,%3B,dot,.', + '&keys=semi,%3B,comma,%2C,dot,.', + '&keys=dot,.,comma,%2C,semi,%3B', + '&keys=comma,%2C,dot,.,semi,%3B' + ], + '{&keys*}' => [ + '&semi=%3B&dot=.&comma=%2C', + '&dot=.&semi=%3B&comma=%2C', + '&comma=%2C&semi=%3B&dot=.', + '&semi=%3B&comma=%2C&dot=.', + '&dot=.&comma=%2C&semi=%3B', + '&comma=%2C&dot=.&semi=%3B' + ] + } + end + context "non-string key in match data" do + subject {Addressable::Template.new("http://example.com/{one}")} + + it "raises TypeError" do + expect { subject.expand(Object.new => "1") }.to raise_error TypeError + end + end +end + +class ExampleTwoProcessor + def self.restore(name, value) + return value.gsub(/-/, " ") if name == "query" + return value + end + + def self.match(name) + return ".*?" if name == "first" + return ".*" + end + def self.validate(name, value) + return !!(value =~ /^[\w ]+$/) if name == "query" + return true + end + + def self.transform(name, value) + return value.gsub(/ /, "+") if name == "query" + return value + end +end + +class DumbProcessor + def self.match(name) + return ".*?" if name == "first" + end +end + +describe Addressable::Template do + describe 'initialize' do + context 'with a non-string' do + it 'raises a TypeError' do + expect { Addressable::Template.new(nil) }.to raise_error(TypeError) + end + end + end + + describe 'freeze' do + subject { Addressable::Template.new("http://example.com/{first}/{+second}/") } + it 'freezes the template' do + expect(subject.freeze).to be_frozen + end + end + + describe "Matching" do + let(:uri){ + Addressable::URI.parse( + "http://example.com/search/an-example-search-query/" + ) + } + let(:uri2){ + Addressable::URI.parse("http://example.com/a/b/c/") + } + let(:uri3){ + Addressable::URI.parse("http://example.com/;a=1;b=2;c=3;first=foo") + } + let(:uri4){ + Addressable::URI.parse("http://example.com/?a=1&b=2&c=3&first=foo") + } + let(:uri5){ + "http://example.com/foo" + } + context "first uri with ExampleTwoProcessor" do + subject { + Addressable::Template.new( + "http://example.com/search/{query}/" + ).match(uri, ExampleTwoProcessor) + } + its(:variables){ should == ["query"] } + its(:captures){ should == ["an example search query"] } + end + + context "second uri with ExampleTwoProcessor" do + subject { + Addressable::Template.new( + "http://example.com/{first}/{+second}/" + ).match(uri2, ExampleTwoProcessor) + } + its(:variables){ should == ["first", "second"] } + its(:captures){ should == ["a", "b/c"] } + end + + context "second uri with DumbProcessor" do + subject { + Addressable::Template.new( + "http://example.com/{first}/{+second}/" + ).match(uri2, DumbProcessor) + } + its(:variables){ should == ["first", "second"] } + its(:captures){ should == ["a", "b/c"] } + end + + context "second uri" do + subject { + Addressable::Template.new( + "http://example.com/{first}{/second*}/" + ).match(uri2) + } + its(:variables){ should == ["first", "second"] } + its(:captures){ should == ["a", ["b","c"]] } + end + context "third uri" do + subject { + Addressable::Template.new( + "http://example.com/{;hash*,first}" + ).match(uri3) + } + its(:variables){ should == ["hash", "first"] } + its(:captures){ should == [ + {"a" => "1", "b" => "2", "c" => "3", "first" => "foo"}, nil] } + end + # Note that this expansion is impossible to revert deterministically - the + # * operator means first could have been a key of hash or a separate key. + # Semantically, a separate key is more likely, but both are possible. + context "fourth uri" do + subject { + Addressable::Template.new( + "http://example.com/{?hash*,first}" + ).match(uri4) + } + its(:variables){ should == ["hash", "first"] } + its(:captures){ should == [ + {"a" => "1", "b" => "2", "c" => "3", "first"=> "foo"}, nil] } + end + context "fifth uri" do + subject { + Addressable::Template.new( + "http://example.com/{path}{?hash*,first}" + ).match(uri5) + } + its(:variables){ should == ["path", "hash", "first"] } + its(:captures){ should == ["foo", nil, nil] } + end + end + + describe 'match' do + subject { Addressable::Template.new('http://example.com/first/second/') } + context 'when the URI is the same as the template' do + it 'returns the match data itself with an empty mapping' do + uri = Addressable::URI.parse('http://example.com/first/second/') + match_data = subject.match(uri) + expect(match_data).to be_an Addressable::Template::MatchData + expect(match_data.uri).to eq(uri) + expect(match_data.template).to eq(subject) + expect(match_data.mapping).to be_empty + expect(match_data.inspect).to be_an String + end + end + end + + describe "extract" do + let(:template) { + Addressable::Template.new( + "http://{host}{/segments*}/{?one,two,bogus}{#fragment}" + ) + } + let(:uri){ "http://example.com/a/b/c/?one=1&two=2#foo" } + let(:uri2){ "http://example.com/a/b/c/#foo" } + it "should be able to extract with queries" do + expect(template.extract(uri)).to eq({ + "host" => "example.com", + "segments" => %w(a b c), + "one" => "1", + "bogus" => nil, + "two" => "2", + "fragment" => "foo" + }) + end + it "should be able to extract without queries" do + expect(template.extract(uri2)).to eq({ + "host" => "example.com", + "segments" => %w(a b c), + "one" => nil, + "bogus" => nil, + "two" => nil, + "fragment" => "foo" + }) + end + + context "issue #137" do + subject { Addressable::Template.new('/path{?page,per_page}') } + + it "can match empty" do + data = subject.extract("/path") + expect(data["page"]).to eq(nil) + expect(data["per_page"]).to eq(nil) + expect(data.keys.sort).to eq(['page', 'per_page']) + end + + it "can match first var" do + data = subject.extract("/path?page=1") + expect(data["page"]).to eq("1") + expect(data["per_page"]).to eq(nil) + expect(data.keys.sort).to eq(['page', 'per_page']) + end + + it "can match second var" do + data = subject.extract("/path?per_page=1") + expect(data["page"]).to eq(nil) + expect(data["per_page"]).to eq("1") + expect(data.keys.sort).to eq(['page', 'per_page']) + end + + it "can match both vars" do + data = subject.extract("/path?page=2&per_page=1") + expect(data["page"]).to eq("2") + expect(data["per_page"]).to eq("1") + expect(data.keys.sort).to eq(['page', 'per_page']) + end + end + end + + describe "Partial expand with symbols" do + context "partial_expand with two simple values" do + subject { + Addressable::Template.new("http://example.com/{one}/{two}/") + } + it "builds a new pattern" do + expect(subject.partial_expand(:one => "1").pattern).to eq( + "http://example.com/1/{two}/" + ) + end + end + context "partial_expand query with missing param in middle" do + subject { + Addressable::Template.new("http://example.com/{?one,two,three}/") + } + it "builds a new pattern" do + expect(subject.partial_expand(:one => "1", :three => "3").pattern).to eq( + "http://example.com/?one=1{&two}&three=3/" + ) + end + end + context "partial_expand form style query with missing param at beginning" do + subject { + Addressable::Template.new("http://example.com/{?one,two}/") + } + it "builds a new pattern" do + expect(subject.partial_expand(:two => "2").pattern).to eq( + "http://example.com/?two=2{&one}/" + ) + end + end + context "partial_expand with query string" do + subject { + Addressable::Template.new("http://example.com/{?two,one}/") + } + it "builds a new pattern" do + expect(subject.partial_expand(:one => "1").pattern).to eq( + "http://example.com/?one=1{&two}/" + ) + end + end + context "partial_expand with path operator" do + subject { + Addressable::Template.new("http://example.com{/one,two}/") + } + it "builds a new pattern" do + expect(subject.partial_expand(:one => "1").pattern).to eq( + "http://example.com/1{/two}/" + ) + end + end + context "partial expand with unicode values" do + subject do + Addressable::Template.new("http://example.com/{resource}/{query}/") + end + it "normalizes unicode by default" do + template = subject.partial_expand("query" => "Cafe\u0301") + expect(template.pattern).to eq( + "http://example.com/{resource}/Caf%C3%A9/" + ) + end + + it "does not normalize unicode when byte semantics requested" do + template = subject.partial_expand({"query" => "Cafe\u0301"}, nil, false) + expect(template.pattern).to eq( + "http://example.com/{resource}/Cafe%CC%81/" + ) + end + end + end + describe "Partial expand with strings" do + context "partial_expand with two simple values" do + subject { + Addressable::Template.new("http://example.com/{one}/{two}/") + } + it "builds a new pattern" do + expect(subject.partial_expand("one" => "1").pattern).to eq( + "http://example.com/1/{two}/" + ) + end + end + context "partial_expand query with missing param in middle" do + subject { + Addressable::Template.new("http://example.com/{?one,two,three}/") + } + it "builds a new pattern" do + expect(subject.partial_expand("one" => "1", "three" => "3").pattern).to eq( + "http://example.com/?one=1{&two}&three=3/" + ) + end + end + context "partial_expand with query string" do + subject { + Addressable::Template.new("http://example.com/{?two,one}/") + } + it "builds a new pattern" do + expect(subject.partial_expand("one" => "1").pattern).to eq( + "http://example.com/?one=1{&two}/" + ) + end + end + context "partial_expand with path operator" do + subject { + Addressable::Template.new("http://example.com{/one,two}/") + } + it "builds a new pattern" do + expect(subject.partial_expand("one" => "1").pattern).to eq( + "http://example.com/1{/two}/" + ) + end + end + end + describe "Expand" do + context "expand with unicode values" do + subject do + Addressable::Template.new("http://example.com/search/{query}/") + end + it "normalizes unicode by default" do + uri = subject.expand("query" => "Cafe\u0301").to_str + expect(uri).to eq("http://example.com/search/Caf%C3%A9/") + end + + it "does not normalize unicode when byte semantics requested" do + uri = subject.expand({ "query" => "Cafe\u0301" }, nil, false).to_str + expect(uri).to eq("http://example.com/search/Cafe%CC%81/") + end + end + context "expand with a processor" do + subject { + Addressable::Template.new("http://example.com/search/{query}/") + } + it "processes spaces" do + expect(subject.expand({"query" => "an example search query"}, + ExampleTwoProcessor).to_str).to eq( + "http://example.com/search/an+example+search+query/" + ) + end + it "validates" do + expect{ + subject.expand({"query" => "Bogus!"}, + ExampleTwoProcessor).to_str + }.to raise_error(Addressable::Template::InvalidTemplateValueError) + end + end + context "partial_expand query with missing param in middle" do + subject { + Addressable::Template.new("http://example.com/{?one,two,three}/") + } + it "builds a new pattern" do + expect(subject.partial_expand("one" => "1", "three" => "3").pattern).to eq( + "http://example.com/?one=1{&two}&three=3/" + ) + end + end + context "partial_expand with query string" do + subject { + Addressable::Template.new("http://example.com/{?two,one}/") + } + it "builds a new pattern" do + expect(subject.partial_expand("one" => "1").pattern).to eq( + "http://example.com/?one=1{&two}/" + ) + end + end + context "partial_expand with path operator" do + subject { + Addressable::Template.new("http://example.com{/one,two}/") + } + it "builds a new pattern" do + expect(subject.partial_expand("one" => "1").pattern).to eq( + "http://example.com/1{/two}/" + ) + end + end + end + context "Matching with operators" do + describe "Level 1:" do + subject { Addressable::Template.new("foo{foo}/{bar}baz") } + it "can match" do + data = subject.match("foofoo/bananabaz") + expect(data.mapping["foo"]).to eq("foo") + expect(data.mapping["bar"]).to eq("banana") + end + it "can fail" do + expect(subject.match("bar/foo")).to be_nil + expect(subject.match("foobaz")).to be_nil + end + it "can match empty" do + data = subject.match("foo/baz") + expect(data.mapping["foo"]).to eq(nil) + expect(data.mapping["bar"]).to eq(nil) + end + it "lists vars" do + expect(subject.variables).to eq(["foo", "bar"]) + end + end + + describe "Level 2:" do + subject { Addressable::Template.new("foo{+foo}{#bar}baz") } + it "can match" do + data = subject.match("foo/test/banana#bazbaz") + expect(data.mapping["foo"]).to eq("/test/banana") + expect(data.mapping["bar"]).to eq("baz") + end + it "can match empty level 2 #" do + data = subject.match("foo/test/bananabaz") + expect(data.mapping["foo"]).to eq("/test/banana") + expect(data.mapping["bar"]).to eq(nil) + data = subject.match("foo/test/banana#baz") + expect(data.mapping["foo"]).to eq("/test/banana") + expect(data.mapping["bar"]).to eq("") + end + it "can match empty level 2 +" do + data = subject.match("foobaz") + expect(data.mapping["foo"]).to eq(nil) + expect(data.mapping["bar"]).to eq(nil) + data = subject.match("foo#barbaz") + expect(data.mapping["foo"]).to eq(nil) + expect(data.mapping["bar"]).to eq("bar") + end + it "lists vars" do + expect(subject.variables).to eq(["foo", "bar"]) + end + end + + describe "Level 3:" do + context "no operator" do + subject { Addressable::Template.new("foo{foo,bar}baz") } + it "can match" do + data = subject.match("foofoo,barbaz") + expect(data.mapping["foo"]).to eq("foo") + expect(data.mapping["bar"]).to eq("bar") + end + it "lists vars" do + expect(subject.variables).to eq(["foo", "bar"]) + end + end + context "+ operator" do + subject { Addressable::Template.new("foo{+foo,bar}baz") } + it "can match" do + data = subject.match("foofoo/bar,barbaz") + expect(data.mapping["bar"]).to eq("foo/bar,bar") + expect(data.mapping["foo"]).to eq("") + end + it "lists vars" do + expect(subject.variables).to eq(["foo", "bar"]) + end + end + context ". operator" do + subject { Addressable::Template.new("foo{.foo,bar}baz") } + it "can match" do + data = subject.match("foo.foo.barbaz") + expect(data.mapping["foo"]).to eq("foo") + expect(data.mapping["bar"]).to eq("bar") + end + it "lists vars" do + expect(subject.variables).to eq(["foo", "bar"]) + end + end + context "/ operator" do + subject { Addressable::Template.new("foo{/foo,bar}baz") } + it "can match" do + data = subject.match("foo/foo/barbaz") + expect(data.mapping["foo"]).to eq("foo") + expect(data.mapping["bar"]).to eq("bar") + end + it "lists vars" do + expect(subject.variables).to eq(["foo", "bar"]) + end + end + context "; operator" do + subject { Addressable::Template.new("foo{;foo,bar,baz}baz") } + it "can match" do + data = subject.match("foo;foo=bar%20baz;bar=foo;bazbaz") + expect(data.mapping["foo"]).to eq("bar baz") + expect(data.mapping["bar"]).to eq("foo") + expect(data.mapping["baz"]).to eq("") + end + it "lists vars" do + expect(subject.variables).to eq(%w(foo bar baz)) + end + end + context "? operator" do + context "test" do + subject { Addressable::Template.new("foo{?foo,bar}baz") } + it "can match" do + data = subject.match("foo?foo=bar%20baz&bar=foobaz") + expect(data.mapping["foo"]).to eq("bar baz") + expect(data.mapping["bar"]).to eq("foo") + end + it "lists vars" do + expect(subject.variables).to eq(%w(foo bar)) + end + end + + context "issue #137" do + subject { Addressable::Template.new('/path{?page,per_page}') } + + it "can match empty" do + data = subject.match("/path") + expect(data.mapping["page"]).to eq(nil) + expect(data.mapping["per_page"]).to eq(nil) + expect(data.mapping.keys.sort).to eq(['page', 'per_page']) + end + + it "can match first var" do + data = subject.match("/path?page=1") + expect(data.mapping["page"]).to eq("1") + expect(data.mapping["per_page"]).to eq(nil) + expect(data.mapping.keys.sort).to eq(['page', 'per_page']) + end + + it "can match second var" do + data = subject.match("/path?per_page=1") + expect(data.mapping["page"]).to eq(nil) + expect(data.mapping["per_page"]).to eq("1") + expect(data.mapping.keys.sort).to eq(['page', 'per_page']) + end + + it "can match both vars" do + data = subject.match("/path?page=2&per_page=1") + expect(data.mapping["page"]).to eq("2") + expect(data.mapping["per_page"]).to eq("1") + expect(data.mapping.keys.sort).to eq(['page', 'per_page']) + end + end + + context "issue #71" do + subject { Addressable::Template.new("http://cyberscore.dev/api/users{?username}") } + it "can match" do + data = subject.match("http://cyberscore.dev/api/users?username=foobaz") + expect(data.mapping["username"]).to eq("foobaz") + end + it "lists vars" do + expect(subject.variables).to eq(%w(username)) + expect(subject.keys).to eq(%w(username)) + end + end + end + context "& operator" do + subject { Addressable::Template.new("foo{&foo,bar}baz") } + it "can match" do + data = subject.match("foo&foo=bar%20baz&bar=foobaz") + expect(data.mapping["foo"]).to eq("bar baz") + expect(data.mapping["bar"]).to eq("foo") + end + it "lists vars" do + expect(subject.variables).to eq(%w(foo bar)) + end + end + end + end + + context "support regexes:" do + context "EXPRESSION" do + subject { Addressable::Template::EXPRESSION } + it "should be able to match an expression" do + expect(subject).to match("{foo}") + expect(subject).to match("{foo,9}") + expect(subject).to match("{foo.bar,baz}") + expect(subject).to match("{+foo.bar,baz}") + expect(subject).to match("{foo,foo%20bar}") + expect(subject).to match("{#foo:20,baz*}") + expect(subject).to match("stuff{#foo:20,baz*}things") + end + it "should fail on non vars" do + expect(subject).not_to match("!{foo") + expect(subject).not_to match("{foo.bar.}") + expect(subject).not_to match("!{}") + end + end + context "VARNAME" do + subject { Addressable::Template::VARNAME } + it "should be able to match a variable" do + expect(subject).to match("foo") + expect(subject).to match("9") + expect(subject).to match("foo.bar") + expect(subject).to match("foo_bar") + expect(subject).to match("foo_bar.baz") + expect(subject).to match("foo%20bar") + expect(subject).to match("foo%20bar.baz") + end + it "should fail on non vars" do + expect(subject).not_to match("!foo") + expect(subject).not_to match("foo.bar.") + expect(subject).not_to match("foo%2%00bar") + expect(subject).not_to match("foo_ba%r") + expect(subject).not_to match("foo_bar*") + expect(subject).not_to match("foo_bar:20") + end + end + context "VARIABLE_LIST" do + subject { Addressable::Template::VARIABLE_LIST } + it "should be able to match a variable list" do + expect(subject).to match("foo,bar") + expect(subject).to match("foo") + expect(subject).to match("foo,bar*,baz") + expect(subject).to match("foo.bar,bar_baz*,baz:12") + end + it "should fail on non vars" do + expect(subject).not_to match(",foo,bar*,baz") + expect(subject).not_to match("foo,*bar,baz") + expect(subject).not_to match("foo,,bar*,baz") + end + end + context "VARSPEC" do + subject { Addressable::Template::VARSPEC } + it "should be able to match a variable with modifier" do + expect(subject).to match("9:8") + expect(subject).to match("foo.bar*") + expect(subject).to match("foo_bar:12") + expect(subject).to match("foo_bar.baz*") + expect(subject).to match("foo%20bar:12") + expect(subject).to match("foo%20bar.baz*") + end + it "should fail on non vars" do + expect(subject).not_to match("!foo") + expect(subject).not_to match("*foo") + expect(subject).not_to match("fo*o") + expect(subject).not_to match("fo:o") + expect(subject).not_to match("foo:") + end + end + end +end + +describe Addressable::Template::MatchData do + let(:template) { Addressable::Template.new('{foo}/{bar}') } + subject(:its) { template.match('ab/cd') } + its(:uri) { should == Addressable::URI.parse('ab/cd') } + its(:template) { should == template } + its(:mapping) { should == { 'foo' => 'ab', 'bar' => 'cd' } } + its(:variables) { should == ['foo', 'bar'] } + its(:keys) { should == ['foo', 'bar'] } + its(:names) { should == ['foo', 'bar'] } + its(:values) { should == ['ab', 'cd'] } + its(:captures) { should == ['ab', 'cd'] } + its(:to_a) { should == ['ab/cd', 'ab', 'cd'] } + its(:to_s) { should == 'ab/cd' } + its(:string) { should == its.to_s } + its(:pre_match) { should == "" } + its(:post_match) { should == "" } + + describe 'values_at' do + it 'returns an array with the values' do + expect(its.values_at(0, 2)).to eq(['ab/cd', 'cd']) + end + it 'allows mixing integer an string keys' do + expect(its.values_at('foo', 1)).to eq(['ab', 'ab']) + end + it 'accepts unknown keys' do + expect(its.values_at('baz', 'foo')).to eq([nil, 'ab']) + end + end + + describe '[]' do + context 'string key' do + it 'returns the corresponding capture' do + expect(its['foo']).to eq('ab') + expect(its['bar']).to eq('cd') + end + it 'returns nil for unknown keys' do + expect(its['baz']).to be_nil + end + end + context 'symbol key' do + it 'returns the corresponding capture' do + expect(its[:foo]).to eq('ab') + expect(its[:bar]).to eq('cd') + end + it 'returns nil for unknown keys' do + expect(its[:baz]).to be_nil + end + end + context 'integer key' do + it 'returns the full URI for index 0' do + expect(its[0]).to eq('ab/cd') + end + it 'returns the corresponding capture' do + expect(its[1]).to eq('ab') + expect(its[2]).to eq('cd') + end + it 'returns nil for unknown keys' do + expect(its[3]).to be_nil + end + end + context 'other key' do + it 'raises an exception' do + expect { its[Object.new] }.to raise_error(TypeError) + end + end + context 'with length' do + it 'returns an array starting at index with given length' do + expect(its[0, 2]).to eq(['ab/cd', 'ab']) + expect(its[2, 1]).to eq(['cd']) + end + end + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/addressable/uri_spec.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/addressable/uri_spec.rb new file mode 100644 index 0000000..dd79d74 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/addressable/uri_spec.rb @@ -0,0 +1,6464 @@ +# coding: utf-8 +# Copyright (C) Bob Aman +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +require "spec_helper" + +require "addressable/uri" +require "uri" +require "ipaddr" + +if !"".respond_to?("force_encoding") + class String + def force_encoding(encoding) + @encoding = encoding + end + + def encoding + @encoding ||= Encoding::ASCII_8BIT + end + end + + class Encoding + def initialize(name) + @name = name + end + + def to_s + return @name + end + + UTF_8 = Encoding.new("UTF-8") + ASCII_8BIT = Encoding.new("US-ASCII") + end +end + +module Fake + module URI + class HTTP + def initialize(uri) + @uri = uri + end + + def to_s + return @uri.to_s + end + + alias :to_str :to_s + end + end +end + +describe Addressable::URI, "when created with a non-numeric port number" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:port => "bogus") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with a invalid encoded port number" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:port => "%eb") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with a non-string scheme" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:scheme => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a non-string user" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:user => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a non-string password" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:password => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a non-string userinfo" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:userinfo => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a non-string host" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:host => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a non-string authority" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:authority => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a non-string path" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:path => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a non-string query" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:query => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a non-string fragment" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:fragment => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a scheme but no hierarchical " + + "segment" do + it "should raise an error" do + expect(lambda do + Addressable::URI.parse("http:") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "quote handling" do + describe 'in host name' do + it "should raise an error for single quote" do + expect(lambda do + Addressable::URI.parse("http://local\"host/") + end).to raise_error(Addressable::URI::InvalidURIError) + end + end +end + +describe Addressable::URI, "newline normalization" do + it "should not accept newlines in scheme" do + expect(lambda do + Addressable::URI.parse("ht%0atp://localhost/") + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should not unescape newline in path" do + uri = Addressable::URI.parse("http://localhost/%0a").normalize + expect(uri.to_s).to eq("http://localhost/%0A") + end + + it "should not unescape newline in hostname" do + uri = Addressable::URI.parse("http://local%0ahost/").normalize + expect(uri.to_s).to eq("http://local%0Ahost/") + end + + it "should not unescape newline in username" do + uri = Addressable::URI.parse("http://foo%0abar@localhost/").normalize + expect(uri.to_s).to eq("http://foo%0Abar@localhost/") + end + + it "should not unescape newline in username" do + uri = Addressable::URI.parse("http://example:foo%0abar@example/").normalize + expect(uri.to_s).to eq("http://example:foo%0Abar@example/") + end + + it "should not accept newline in hostname" do + uri = Addressable::URI.parse("http://localhost/") + expect(lambda do + uri.host = "local\nhost" + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with ambiguous path" do + it "should raise an error" do + expect(lambda do + Addressable::URI.parse("::http") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with an invalid host" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:host => "") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with a host consisting of " + + "sub-delims characters" do + it "should not raise an error" do + expect(lambda do + Addressable::URI.new( + :host => Addressable::URI::CharacterClasses::SUB_DELIMS.gsub(/\\/, '') + ) + end).not_to raise_error + end +end + +describe Addressable::URI, "when created with a host consisting of " + + "unreserved characters" do + it "should not raise an error" do + expect(lambda do + Addressable::URI.new( + :host => Addressable::URI::CharacterClasses::UNRESERVED.gsub(/\\/, '') + ) + end).not_to raise_error + end +end + +describe Addressable::URI, "when created from nil components" do + before do + @uri = Addressable::URI.new + end + + it "should have a nil site value" do + expect(@uri.site).to eq(nil) + end + + it "should have an empty path" do + expect(@uri.path).to eq("") + end + + it "should be an empty uri" do + expect(@uri.to_s).to eq("") + end + + it "should have a nil default port" do + expect(@uri.default_port).to eq(nil) + end + + it "should be empty" do + expect(@uri).to be_empty + end + + it "should raise an error if the scheme is set to whitespace" do + expect(lambda do + @uri.scheme = "\t \n" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if the scheme is set to all digits" do + expect(lambda do + @uri.scheme = "123" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if the scheme begins with a digit" do + expect(lambda do + @uri.scheme = "1scheme" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if the scheme begins with a plus" do + expect(lambda do + @uri.scheme = "+scheme" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if the scheme begins with a dot" do + expect(lambda do + @uri.scheme = ".scheme" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if the scheme begins with a dash" do + expect(lambda do + @uri.scheme = "-scheme" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if the scheme contains an illegal character" do + expect(lambda do + @uri.scheme = "scheme!" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if the scheme contains whitespace" do + expect(lambda do + @uri.scheme = "sch eme" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if the scheme contains a newline" do + expect(lambda do + @uri.scheme = "sch\neme" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if set into an invalid state" do + expect(lambda do + @uri.user = "user" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if set into an invalid state" do + expect(lambda do + @uri.password = "pass" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if set into an invalid state" do + expect(lambda do + @uri.scheme = "http" + @uri.fragment = "fragment" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if set into an invalid state" do + expect(lambda do + @uri.fragment = "fragment" + @uri.scheme = "http" + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when initialized from individual components" do + before do + @uri = Addressable::URI.new( + :scheme => "http", + :user => "user", + :password => "password", + :host => "example.com", + :port => 8080, + :path => "/path", + :query => "query=value", + :fragment => "fragment" + ) + end + + it "returns 'http' for #scheme" do + expect(@uri.scheme).to eq("http") + end + + it "returns 'http' for #normalized_scheme" do + expect(@uri.normalized_scheme).to eq("http") + end + + it "returns 'user' for #user" do + expect(@uri.user).to eq("user") + end + + it "returns 'user' for #normalized_user" do + expect(@uri.normalized_user).to eq("user") + end + + it "returns 'password' for #password" do + expect(@uri.password).to eq("password") + end + + it "returns 'password' for #normalized_password" do + expect(@uri.normalized_password).to eq("password") + end + + it "returns 'user:password' for #userinfo" do + expect(@uri.userinfo).to eq("user:password") + end + + it "returns 'user:password' for #normalized_userinfo" do + expect(@uri.normalized_userinfo).to eq("user:password") + end + + it "returns 'example.com' for #host" do + expect(@uri.host).to eq("example.com") + end + + it "returns 'example.com' for #normalized_host" do + expect(@uri.normalized_host).to eq("example.com") + end + + it "returns 'com' for #tld" do + expect(@uri.tld).to eq("com") + end + + it "returns 'user:password@example.com:8080' for #authority" do + expect(@uri.authority).to eq("user:password@example.com:8080") + end + + it "returns 'user:password@example.com:8080' for #normalized_authority" do + expect(@uri.normalized_authority).to eq("user:password@example.com:8080") + end + + it "returns 8080 for #port" do + expect(@uri.port).to eq(8080) + end + + it "returns 8080 for #normalized_port" do + expect(@uri.normalized_port).to eq(8080) + end + + it "returns 80 for #default_port" do + expect(@uri.default_port).to eq(80) + end + + it "returns 'http://user:password@example.com:8080' for #site" do + expect(@uri.site).to eq("http://user:password@example.com:8080") + end + + it "returns 'http://user:password@example.com:8080' for #normalized_site" do + expect(@uri.normalized_site).to eq("http://user:password@example.com:8080") + end + + it "returns '/path' for #path" do + expect(@uri.path).to eq("/path") + end + + it "returns '/path' for #normalized_path" do + expect(@uri.normalized_path).to eq("/path") + end + + it "returns 'query=value' for #query" do + expect(@uri.query).to eq("query=value") + end + + it "returns 'query=value' for #normalized_query" do + expect(@uri.normalized_query).to eq("query=value") + end + + it "returns 'fragment' for #fragment" do + expect(@uri.fragment).to eq("fragment") + end + + it "returns 'fragment' for #normalized_fragment" do + expect(@uri.normalized_fragment).to eq("fragment") + end + + it "returns #hash" do + expect(@uri.hash).not_to be nil + end + + it "returns #to_s" do + expect(@uri.to_s).to eq( + "http://user:password@example.com:8080/path?query=value#fragment" + ) + end + + it "should not be empty" do + expect(@uri).not_to be_empty + end + + it "should not be frozen" do + expect(@uri).not_to be_frozen + end + + it "should allow destructive operations" do + expect { @uri.normalize! }.not_to raise_error + end +end + +describe Addressable::URI, "when initialized from " + + "frozen individual components" do + before do + @uri = Addressable::URI.new( + :scheme => "http".freeze, + :user => "user".freeze, + :password => "password".freeze, + :host => "example.com".freeze, + :port => "8080".freeze, + :path => "/path".freeze, + :query => "query=value".freeze, + :fragment => "fragment".freeze + ) + end + + it "returns 'http' for #scheme" do + expect(@uri.scheme).to eq("http") + end + + it "returns 'http' for #normalized_scheme" do + expect(@uri.normalized_scheme).to eq("http") + end + + it "returns 'user' for #user" do + expect(@uri.user).to eq("user") + end + + it "returns 'user' for #normalized_user" do + expect(@uri.normalized_user).to eq("user") + end + + it "returns 'password' for #password" do + expect(@uri.password).to eq("password") + end + + it "returns 'password' for #normalized_password" do + expect(@uri.normalized_password).to eq("password") + end + + it "returns 'user:password' for #userinfo" do + expect(@uri.userinfo).to eq("user:password") + end + + it "returns 'user:password' for #normalized_userinfo" do + expect(@uri.normalized_userinfo).to eq("user:password") + end + + it "returns 'example.com' for #host" do + expect(@uri.host).to eq("example.com") + end + + it "returns 'example.com' for #normalized_host" do + expect(@uri.normalized_host).to eq("example.com") + end + + it "returns 'user:password@example.com:8080' for #authority" do + expect(@uri.authority).to eq("user:password@example.com:8080") + end + + it "returns 'user:password@example.com:8080' for #normalized_authority" do + expect(@uri.normalized_authority).to eq("user:password@example.com:8080") + end + + it "returns 8080 for #port" do + expect(@uri.port).to eq(8080) + end + + it "returns 8080 for #normalized_port" do + expect(@uri.normalized_port).to eq(8080) + end + + it "returns 80 for #default_port" do + expect(@uri.default_port).to eq(80) + end + + it "returns 'http://user:password@example.com:8080' for #site" do + expect(@uri.site).to eq("http://user:password@example.com:8080") + end + + it "returns 'http://user:password@example.com:8080' for #normalized_site" do + expect(@uri.normalized_site).to eq("http://user:password@example.com:8080") + end + + it "returns '/path' for #path" do + expect(@uri.path).to eq("/path") + end + + it "returns '/path' for #normalized_path" do + expect(@uri.normalized_path).to eq("/path") + end + + it "returns 'query=value' for #query" do + expect(@uri.query).to eq("query=value") + end + + it "returns 'query=value' for #normalized_query" do + expect(@uri.normalized_query).to eq("query=value") + end + + it "returns 'fragment' for #fragment" do + expect(@uri.fragment).to eq("fragment") + end + + it "returns 'fragment' for #normalized_fragment" do + expect(@uri.normalized_fragment).to eq("fragment") + end + + it "returns #hash" do + expect(@uri.hash).not_to be nil + end + + it "returns #to_s" do + expect(@uri.to_s).to eq( + "http://user:password@example.com:8080/path?query=value#fragment" + ) + end + + it "should not be empty" do + expect(@uri).not_to be_empty + end + + it "should not be frozen" do + expect(@uri).not_to be_frozen + end + + it "should allow destructive operations" do + expect { @uri.normalize! }.not_to raise_error + end +end + +describe Addressable::URI, "when parsed from a frozen string" do + before do + @uri = Addressable::URI.parse( + "http://user:password@example.com:8080/path?query=value#fragment".freeze + ) + end + + it "returns 'http' for #scheme" do + expect(@uri.scheme).to eq("http") + end + + it "returns 'http' for #normalized_scheme" do + expect(@uri.normalized_scheme).to eq("http") + end + + it "returns 'user' for #user" do + expect(@uri.user).to eq("user") + end + + it "returns 'user' for #normalized_user" do + expect(@uri.normalized_user).to eq("user") + end + + it "returns 'password' for #password" do + expect(@uri.password).to eq("password") + end + + it "returns 'password' for #normalized_password" do + expect(@uri.normalized_password).to eq("password") + end + + it "returns 'user:password' for #userinfo" do + expect(@uri.userinfo).to eq("user:password") + end + + it "returns 'user:password' for #normalized_userinfo" do + expect(@uri.normalized_userinfo).to eq("user:password") + end + + it "returns 'example.com' for #host" do + expect(@uri.host).to eq("example.com") + end + + it "returns 'example.com' for #normalized_host" do + expect(@uri.normalized_host).to eq("example.com") + end + + it "returns 'user:password@example.com:8080' for #authority" do + expect(@uri.authority).to eq("user:password@example.com:8080") + end + + it "returns 'user:password@example.com:8080' for #normalized_authority" do + expect(@uri.normalized_authority).to eq("user:password@example.com:8080") + end + + it "returns 8080 for #port" do + expect(@uri.port).to eq(8080) + end + + it "returns 8080 for #normalized_port" do + expect(@uri.normalized_port).to eq(8080) + end + + it "returns 80 for #default_port" do + expect(@uri.default_port).to eq(80) + end + + it "returns 'http://user:password@example.com:8080' for #site" do + expect(@uri.site).to eq("http://user:password@example.com:8080") + end + + it "returns 'http://user:password@example.com:8080' for #normalized_site" do + expect(@uri.normalized_site).to eq("http://user:password@example.com:8080") + end + + it "returns '/path' for #path" do + expect(@uri.path).to eq("/path") + end + + it "returns '/path' for #normalized_path" do + expect(@uri.normalized_path).to eq("/path") + end + + it "returns 'query=value' for #query" do + expect(@uri.query).to eq("query=value") + end + + it "returns 'query=value' for #normalized_query" do + expect(@uri.normalized_query).to eq("query=value") + end + + it "returns 'fragment' for #fragment" do + expect(@uri.fragment).to eq("fragment") + end + + it "returns 'fragment' for #normalized_fragment" do + expect(@uri.normalized_fragment).to eq("fragment") + end + + it "returns #hash" do + expect(@uri.hash).not_to be nil + end + + it "returns #to_s" do + expect(@uri.to_s).to eq( + "http://user:password@example.com:8080/path?query=value#fragment" + ) + end + + it "should not be empty" do + expect(@uri).not_to be_empty + end + + it "should not be frozen" do + expect(@uri).not_to be_frozen + end + + it "should allow destructive operations" do + expect { @uri.normalize! }.not_to raise_error + end +end + +describe Addressable::URI, "when frozen" do + before do + @uri = Addressable::URI.new.freeze + end + + it "returns nil for #scheme" do + expect(@uri.scheme).to eq(nil) + end + + it "returns nil for #normalized_scheme" do + expect(@uri.normalized_scheme).to eq(nil) + end + + it "returns nil for #user" do + expect(@uri.user).to eq(nil) + end + + it "returns nil for #normalized_user" do + expect(@uri.normalized_user).to eq(nil) + end + + it "returns nil for #password" do + expect(@uri.password).to eq(nil) + end + + it "returns nil for #normalized_password" do + expect(@uri.normalized_password).to eq(nil) + end + + it "returns nil for #userinfo" do + expect(@uri.userinfo).to eq(nil) + end + + it "returns nil for #normalized_userinfo" do + expect(@uri.normalized_userinfo).to eq(nil) + end + + it "returns nil for #host" do + expect(@uri.host).to eq(nil) + end + + it "returns nil for #normalized_host" do + expect(@uri.normalized_host).to eq(nil) + end + + it "returns nil for #authority" do + expect(@uri.authority).to eq(nil) + end + + it "returns nil for #normalized_authority" do + expect(@uri.normalized_authority).to eq(nil) + end + + it "returns nil for #port" do + expect(@uri.port).to eq(nil) + end + + it "returns nil for #normalized_port" do + expect(@uri.normalized_port).to eq(nil) + end + + it "returns nil for #default_port" do + expect(@uri.default_port).to eq(nil) + end + + it "returns nil for #site" do + expect(@uri.site).to eq(nil) + end + + it "returns nil for #normalized_site" do + expect(@uri.normalized_site).to eq(nil) + end + + it "returns '' for #path" do + expect(@uri.path).to eq('') + end + + it "returns '' for #normalized_path" do + expect(@uri.normalized_path).to eq('') + end + + it "returns nil for #query" do + expect(@uri.query).to eq(nil) + end + + it "returns nil for #normalized_query" do + expect(@uri.normalized_query).to eq(nil) + end + + it "returns nil for #fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "returns nil for #normalized_fragment" do + expect(@uri.normalized_fragment).to eq(nil) + end + + it "returns #hash" do + expect(@uri.hash).not_to be nil + end + + it "returns #to_s" do + expect(@uri.to_s).to eq('') + end + + it "should be empty" do + expect(@uri).to be_empty + end + + it "should be frozen" do + expect(@uri).to be_frozen + end + + it "should not be frozen after duping" do + expect(@uri.dup).not_to be_frozen + end + + it "should not allow destructive operations" do + expect { @uri.normalize! }.to raise_error { |error| + expect(error.message).to match(/can't modify frozen/) + expect(error).to satisfy { |e| RuntimeError === e || TypeError === e } + } + end +end + +describe Addressable::URI, "when frozen" do + before do + @uri = Addressable::URI.parse( + "HTTP://example.com.:%38%30/%70a%74%68?a=%31#1%323" + ).freeze + end + + it "returns 'HTTP' for #scheme" do + expect(@uri.scheme).to eq("HTTP") + end + + it "returns 'http' for #normalized_scheme" do + expect(@uri.normalized_scheme).to eq("http") + expect(@uri.normalize.scheme).to eq("http") + end + + it "returns nil for #user" do + expect(@uri.user).to eq(nil) + end + + it "returns nil for #normalized_user" do + expect(@uri.normalized_user).to eq(nil) + end + + it "returns nil for #password" do + expect(@uri.password).to eq(nil) + end + + it "returns nil for #normalized_password" do + expect(@uri.normalized_password).to eq(nil) + end + + it "returns nil for #userinfo" do + expect(@uri.userinfo).to eq(nil) + end + + it "returns nil for #normalized_userinfo" do + expect(@uri.normalized_userinfo).to eq(nil) + end + + it "returns 'example.com.' for #host" do + expect(@uri.host).to eq("example.com.") + end + + it "returns nil for #normalized_host" do + expect(@uri.normalized_host).to eq("example.com") + expect(@uri.normalize.host).to eq("example.com") + end + + it "returns 'example.com.:80' for #authority" do + expect(@uri.authority).to eq("example.com.:80") + end + + it "returns 'example.com:80' for #normalized_authority" do + expect(@uri.normalized_authority).to eq("example.com") + expect(@uri.normalize.authority).to eq("example.com") + end + + it "returns 80 for #port" do + expect(@uri.port).to eq(80) + end + + it "returns nil for #normalized_port" do + expect(@uri.normalized_port).to eq(nil) + expect(@uri.normalize.port).to eq(nil) + end + + it "returns 80 for #default_port" do + expect(@uri.default_port).to eq(80) + end + + it "returns 'HTTP://example.com.:80' for #site" do + expect(@uri.site).to eq("HTTP://example.com.:80") + end + + it "returns 'http://example.com' for #normalized_site" do + expect(@uri.normalized_site).to eq("http://example.com") + expect(@uri.normalize.site).to eq("http://example.com") + end + + it "returns '/%70a%74%68' for #path" do + expect(@uri.path).to eq("/%70a%74%68") + end + + it "returns '/path' for #normalized_path" do + expect(@uri.normalized_path).to eq("/path") + expect(@uri.normalize.path).to eq("/path") + end + + it "returns 'a=%31' for #query" do + expect(@uri.query).to eq("a=%31") + end + + it "returns 'a=1' for #normalized_query" do + expect(@uri.normalized_query).to eq("a=1") + expect(@uri.normalize.query).to eq("a=1") + end + + it "returns '1%323' for #fragment" do + expect(@uri.fragment).to eq("1%323") + end + + it "returns '123' for #normalized_fragment" do + expect(@uri.normalized_fragment).to eq("123") + expect(@uri.normalize.fragment).to eq("123") + end + + it "returns #hash" do + expect(@uri.hash).not_to be nil + end + + it "returns #to_s" do + expect(@uri.to_s).to eq('HTTP://example.com.:80/%70a%74%68?a=%31#1%323') + expect(@uri.normalize.to_s).to eq('http://example.com/path?a=1#123') + end + + it "should not be empty" do + expect(@uri).not_to be_empty + end + + it "should be frozen" do + expect(@uri).to be_frozen + end + + it "should not be frozen after duping" do + expect(@uri.dup).not_to be_frozen + end + + it "should not allow destructive operations" do + expect { @uri.normalize! }.to raise_error { |error| + expect(error.message).to match(/can't modify frozen/) + expect(error).to satisfy { |e| RuntimeError === e || TypeError === e } + } + end +end + +describe Addressable::URI, "when created from string components" do + before do + @uri = Addressable::URI.new( + :scheme => "http", :host => "example.com" + ) + end + + it "should have a site value of 'http://example.com'" do + expect(@uri.site).to eq("http://example.com") + end + + it "should be equal to the equivalent parsed URI" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com")) + end + + it "should raise an error if invalid components omitted" do + expect(lambda do + @uri.omit(:bogus) + end).to raise_error(ArgumentError) + expect(lambda do + @uri.omit(:scheme, :bogus, :path) + end).to raise_error(ArgumentError) + end +end + +describe Addressable::URI, "when created with a nil host but " + + "non-nil authority components" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:user => "user", :password => "pass", :port => 80) + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with both an authority and a user" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new( + :user => "user", :authority => "user@example.com:80" + ) + end).to raise_error(ArgumentError) + end +end + +describe Addressable::URI, "when created with an authority and no port" do + before do + @uri = Addressable::URI.new(:authority => "user@example.com") + end + + it "should not infer a port" do + expect(@uri.port).to eq(nil) + expect(@uri.default_port).to eq(nil) + expect(@uri.inferred_port).to eq(nil) + end + + it "should have a site value of '//user@example.com'" do + expect(@uri.site).to eq("//user@example.com") + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when created with a host with trailing dots" do + before do + @uri = Addressable::URI.new(:authority => "example...") + end + + it "should have a stable normalized form" do + expect(@uri.normalize.normalize.normalize.host).to eq( + @uri.normalize.host + ) + end +end + +describe Addressable::URI, "when created with a host with a backslash" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:authority => "example\\example") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with a host with a slash" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:authority => "example/example") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with a host with a space" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:authority => "example example") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with both a userinfo and a user" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:user => "user", :userinfo => "user:pass") + end).to raise_error(ArgumentError) + end +end + +describe Addressable::URI, "when created with a path that hasn't been " + + "prefixed with a '/' but a host specified" do + before do + @uri = Addressable::URI.new( + :scheme => "http", :host => "example.com", :path => "path" + ) + end + + it "should prefix a '/' to the path" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com/path")) + end + + it "should have a site value of 'http://example.com'" do + expect(@uri.site).to eq("http://example.com") + end + + it "should have an origin of 'http://example.com" do + expect(@uri.origin).to eq('http://example.com') + end +end + +describe Addressable::URI, "when created with a path that hasn't been " + + "prefixed with a '/' but no host specified" do + before do + @uri = Addressable::URI.new( + :scheme => "http", :path => "path" + ) + end + + it "should not prefix a '/' to the path" do + expect(@uri).to eq(Addressable::URI.parse("http:path")) + end + + it "should have a site value of 'http:'" do + expect(@uri.site).to eq("http:") + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from an Addressable::URI object" do + it "should not have unexpected side-effects" do + original_uri = Addressable::URI.parse("http://example.com/") + new_uri = Addressable::URI.parse(original_uri) + new_uri.host = 'www.example.com' + expect(new_uri.host).to eq('www.example.com') + expect(new_uri.to_s).to eq('http://www.example.com/') + expect(original_uri.host).to eq('example.com') + expect(original_uri.to_s).to eq('http://example.com/') + end + + it "should not have unexpected side-effects" do + original_uri = Addressable::URI.parse("http://example.com/") + new_uri = Addressable::URI.heuristic_parse(original_uri) + new_uri.host = 'www.example.com' + expect(new_uri.host).to eq('www.example.com') + expect(new_uri.to_s).to eq('http://www.example.com/') + expect(original_uri.host).to eq('example.com') + expect(original_uri.to_s).to eq('http://example.com/') + end + + it "should not have unexpected side-effects" do + original_uri = Addressable::URI.parse("http://example.com/") + new_uri = Addressable::URI.parse(original_uri) + new_uri.origin = 'https://www.example.com:8080' + expect(new_uri.host).to eq('www.example.com') + expect(new_uri.to_s).to eq('https://www.example.com:8080/') + expect(original_uri.host).to eq('example.com') + expect(original_uri.to_s).to eq('http://example.com/') + end + + it "should not have unexpected side-effects" do + original_uri = Addressable::URI.parse("http://example.com/") + new_uri = Addressable::URI.heuristic_parse(original_uri) + new_uri.origin = 'https://www.example.com:8080' + expect(new_uri.host).to eq('www.example.com') + expect(new_uri.to_s).to eq('https://www.example.com:8080/') + expect(original_uri.host).to eq('example.com') + expect(original_uri.to_s).to eq('http://example.com/') + end +end + +describe Addressable::URI, "when parsed from something that looks " + + "like a URI object" do + it "should parse without error" do + uri = Addressable::URI.parse(Fake::URI::HTTP.new("http://example.com/")) + expect(lambda do + Addressable::URI.parse(uri) + end).not_to raise_error + end +end + +describe Addressable::URI, "when parsed from a standard library URI object" do + it "should parse without error" do + uri = Addressable::URI.parse(URI.parse("http://example.com/")) + expect(lambda do + Addressable::URI.parse(uri) + end).not_to raise_error + end +end + +describe Addressable::URI, "when parsed from ''" do + before do + @uri = Addressable::URI.parse("") + end + + it "should have no scheme" do + expect(@uri.scheme).to eq(nil) + end + + it "should not be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should have a path of ''" do + expect(@uri.path).to eq("") + end + + it "should have a request URI of '/'" do + expect(@uri.request_uri).to eq("/") + end + + it "should be considered relative" do + expect(@uri).to be_relative + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +# Section 1.1.2 of RFC 3986 +describe Addressable::URI, "when parsed from " + + "'ftp://ftp.is.co.za/rfc/rfc1808.txt'" do + before do + @uri = Addressable::URI.parse("ftp://ftp.is.co.za/rfc/rfc1808.txt") + end + + it "should use the 'ftp' scheme" do + expect(@uri.scheme).to eq("ftp") + end + + it "should be considered to be ip-based" do + expect(@uri).to be_ip_based + end + + it "should have a host of 'ftp.is.co.za'" do + expect(@uri.host).to eq("ftp.is.co.za") + end + + it "should have inferred_port of 21" do + expect(@uri.inferred_port).to eq(21) + end + + it "should have a path of '/rfc/rfc1808.txt'" do + expect(@uri.path).to eq("/rfc/rfc1808.txt") + end + + it "should not have a request URI" do + expect(@uri.request_uri).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have an origin of 'ftp://ftp.is.co.za'" do + expect(@uri.origin).to eq('ftp://ftp.is.co.za') + end +end + +# Section 1.1.2 of RFC 3986 +describe Addressable::URI, "when parsed from " + + "'http://www.ietf.org/rfc/rfc2396.txt'" do + before do + @uri = Addressable::URI.parse("http://www.ietf.org/rfc/rfc2396.txt") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should be considered to be ip-based" do + expect(@uri).to be_ip_based + end + + it "should have a host of 'www.ietf.org'" do + expect(@uri.host).to eq("www.ietf.org") + end + + it "should have inferred_port of 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a path of '/rfc/rfc2396.txt'" do + expect(@uri.path).to eq("/rfc/rfc2396.txt") + end + + it "should have a request URI of '/rfc/rfc2396.txt'" do + expect(@uri.request_uri).to eq("/rfc/rfc2396.txt") + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should correctly omit components" do + expect(@uri.omit(:scheme).to_s).to eq("//www.ietf.org/rfc/rfc2396.txt") + expect(@uri.omit(:path).to_s).to eq("http://www.ietf.org") + end + + it "should correctly omit components destructively" do + @uri.omit!(:scheme) + expect(@uri.to_s).to eq("//www.ietf.org/rfc/rfc2396.txt") + end + + it "should have an origin of 'http://www.ietf.org'" do + expect(@uri.origin).to eq('http://www.ietf.org') + end +end + +# Section 1.1.2 of RFC 3986 +describe Addressable::URI, "when parsed from " + + "'ldap://[2001:db8::7]/c=GB?objectClass?one'" do + before do + @uri = Addressable::URI.parse("ldap://[2001:db8::7]/c=GB?objectClass?one") + end + + it "should use the 'ldap' scheme" do + expect(@uri.scheme).to eq("ldap") + end + + it "should be considered to be ip-based" do + expect(@uri).to be_ip_based + end + + it "should have a host of '[2001:db8::7]'" do + expect(@uri.host).to eq("[2001:db8::7]") + end + + it "should have inferred_port of 389" do + expect(@uri.inferred_port).to eq(389) + end + + it "should have a path of '/c=GB'" do + expect(@uri.path).to eq("/c=GB") + end + + it "should not have a request URI" do + expect(@uri.request_uri).to eq(nil) + end + + it "should not allow request URI assignment" do + expect(lambda do + @uri.request_uri = "/" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should have a query of 'objectClass?one'" do + expect(@uri.query).to eq("objectClass?one") + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should correctly omit components" do + expect(@uri.omit(:scheme, :authority).to_s).to eq("/c=GB?objectClass?one") + expect(@uri.omit(:path).to_s).to eq("ldap://[2001:db8::7]?objectClass?one") + end + + it "should correctly omit components destructively" do + @uri.omit!(:scheme, :authority) + expect(@uri.to_s).to eq("/c=GB?objectClass?one") + end + + it "should raise an error if omission would create an invalid URI" do + expect(lambda do + @uri.omit(:authority, :path) + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should have an origin of 'ldap://[2001:db8::7]'" do + expect(@uri.origin).to eq('ldap://[2001:db8::7]') + end +end + +# Section 1.1.2 of RFC 3986 +describe Addressable::URI, "when parsed from " + + "'mailto:John.Doe@example.com'" do + before do + @uri = Addressable::URI.parse("mailto:John.Doe@example.com") + end + + it "should use the 'mailto' scheme" do + expect(@uri.scheme).to eq("mailto") + end + + it "should not be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should not have an inferred_port" do + expect(@uri.inferred_port).to eq(nil) + end + + it "should have a path of 'John.Doe@example.com'" do + expect(@uri.path).to eq("John.Doe@example.com") + end + + it "should not have a request URI" do + expect(@uri.request_uri).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +# Section 2 of RFC 6068 +describe Addressable::URI, "when parsed from " + + "'mailto:?to=addr1@an.example,addr2@an.example'" do + before do + @uri = Addressable::URI.parse( + "mailto:?to=addr1@an.example,addr2@an.example" + ) + end + + it "should use the 'mailto' scheme" do + expect(@uri.scheme).to eq("mailto") + end + + it "should not be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should not have an inferred_port" do + expect(@uri.inferred_port).to eq(nil) + end + + it "should have a path of ''" do + expect(@uri.path).to eq("") + end + + it "should not have a request URI" do + expect(@uri.request_uri).to eq(nil) + end + + it "should have the To: field value parameterized" do + expect(@uri.query_values(Hash)["to"]).to eq( + "addr1@an.example,addr2@an.example" + ) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +# Section 1.1.2 of RFC 3986 +describe Addressable::URI, "when parsed from " + + "'news:comp.infosystems.www.servers.unix'" do + before do + @uri = Addressable::URI.parse("news:comp.infosystems.www.servers.unix") + end + + it "should use the 'news' scheme" do + expect(@uri.scheme).to eq("news") + end + + it "should not have an inferred_port" do + expect(@uri.inferred_port).to eq(nil) + end + + it "should not be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should have a path of 'comp.infosystems.www.servers.unix'" do + expect(@uri.path).to eq("comp.infosystems.www.servers.unix") + end + + it "should not have a request URI" do + expect(@uri.request_uri).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +# Section 1.1.2 of RFC 3986 +describe Addressable::URI, "when parsed from " + + "'tel:+1-816-555-1212'" do + before do + @uri = Addressable::URI.parse("tel:+1-816-555-1212") + end + + it "should use the 'tel' scheme" do + expect(@uri.scheme).to eq("tel") + end + + it "should not be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should not have an inferred_port" do + expect(@uri.inferred_port).to eq(nil) + end + + it "should have a path of '+1-816-555-1212'" do + expect(@uri.path).to eq("+1-816-555-1212") + end + + it "should not have a request URI" do + expect(@uri.request_uri).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +# Section 1.1.2 of RFC 3986 +describe Addressable::URI, "when parsed from " + + "'telnet://192.0.2.16:80/'" do + before do + @uri = Addressable::URI.parse("telnet://192.0.2.16:80/") + end + + it "should use the 'telnet' scheme" do + expect(@uri.scheme).to eq("telnet") + end + + it "should have a host of '192.0.2.16'" do + expect(@uri.host).to eq("192.0.2.16") + end + + it "should have a port of 80" do + expect(@uri.port).to eq(80) + end + + it "should have a inferred_port of 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a default_port of 23" do + expect(@uri.default_port).to eq(23) + end + + it "should be considered to be ip-based" do + expect(@uri).to be_ip_based + end + + it "should have a path of '/'" do + expect(@uri.path).to eq("/") + end + + it "should not have a request URI" do + expect(@uri.request_uri).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have an origin of 'telnet://192.0.2.16:80'" do + expect(@uri.origin).to eq('telnet://192.0.2.16:80') + end +end + +# Section 1.1.2 of RFC 3986 +describe Addressable::URI, "when parsed from " + + "'urn:oasis:names:specification:docbook:dtd:xml:4.1.2'" do + before do + @uri = Addressable::URI.parse( + "urn:oasis:names:specification:docbook:dtd:xml:4.1.2") + end + + it "should use the 'urn' scheme" do + expect(@uri.scheme).to eq("urn") + end + + it "should not have an inferred_port" do + expect(@uri.inferred_port).to eq(nil) + end + + it "should not be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should have a path of " + + "'oasis:names:specification:docbook:dtd:xml:4.1.2'" do + expect(@uri.path).to eq("oasis:names:specification:docbook:dtd:xml:4.1.2") + end + + it "should not have a request URI" do + expect(@uri.request_uri).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when heuristically parsed from " + + "'192.0.2.16:8000/path'" do + before do + @uri = Addressable::URI.heuristic_parse("192.0.2.16:8000/path") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have a host of '192.0.2.16'" do + expect(@uri.host).to eq("192.0.2.16") + end + + it "should have a port of '8000'" do + expect(@uri.port).to eq(8000) + end + + it "should be considered to be ip-based" do + expect(@uri).to be_ip_based + end + + it "should have a path of '/path'" do + expect(@uri.path).to eq("/path") + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have an origin of 'http://192.0.2.16:8000'" do + expect(@uri.origin).to eq('http://192.0.2.16:8000') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com'" do + before do + @uri = Addressable::URI.parse("http://example.com") + end + + it "when inspected, should have the correct URI" do + expect(@uri.inspect).to include("http://example.com") + end + + it "when inspected, should have the correct class name" do + expect(@uri.inspect).to include("Addressable::URI") + end + + it "when inspected, should have the correct object id" do + expect(@uri.inspect).to include("%#0x" % @uri.object_id) + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should be considered to be ip-based" do + expect(@uri).to be_ip_based + end + + it "should have an authority segment of 'example.com'" do + expect(@uri.authority).to eq("example.com") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should be considered ip-based" do + expect(@uri).to be_ip_based + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should not have a specified port" do + expect(@uri.port).to eq(nil) + end + + it "should have an empty path" do + expect(@uri.path).to eq("") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + expect(@uri.query_values).to eq(nil) + end + + it "should have a request URI of '/'" do + expect(@uri.request_uri).to eq("/") + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "should be considered absolute" do + expect(@uri).to be_absolute + end + + it "should not be considered relative" do + expect(@uri).not_to be_relative + end + + it "should not be exactly equal to 42" do + expect(@uri.eql?(42)).to eq(false) + end + + it "should not be equal to 42" do + expect(@uri == 42).to eq(false) + end + + it "should not be roughly equal to 42" do + expect(@uri === 42).to eq(false) + end + + it "should be exactly equal to http://example.com" do + expect(@uri.eql?(Addressable::URI.parse("http://example.com"))).to eq(true) + end + + it "should be roughly equal to http://example.com/" do + expect(@uri === Addressable::URI.parse("http://example.com/")).to eq(true) + end + + it "should be roughly equal to the string 'http://example.com/'" do + expect(@uri === "http://example.com/").to eq(true) + end + + it "should not be roughly equal to the string " + + "'http://example.com:bogus/'" do + expect(lambda do + expect(@uri === "http://example.com:bogus/").to eq(false) + end).not_to raise_error + end + + it "should result in itself when joined with itself" do + expect(@uri.join(@uri).to_s).to eq("http://example.com") + expect(@uri.join!(@uri).to_s).to eq("http://example.com") + end + + it "should be equivalent to http://EXAMPLE.com" do + expect(@uri).to eq(Addressable::URI.parse("http://EXAMPLE.com")) + end + + it "should be equivalent to http://EXAMPLE.com:80/" do + expect(@uri).to eq(Addressable::URI.parse("http://EXAMPLE.com:80/")) + end + + it "should have the same hash as http://example.com" do + expect(@uri.hash).to eq(Addressable::URI.parse("http://example.com").hash) + end + + it "should have the same hash as http://EXAMPLE.com after assignment" do + @uri.origin = "http://EXAMPLE.com" + expect(@uri.hash).to eq(Addressable::URI.parse("http://EXAMPLE.com").hash) + end + + it "should have a different hash from http://EXAMPLE.com" do + expect(@uri.hash).not_to eq(Addressable::URI.parse("http://EXAMPLE.com").hash) + end + + it "should not allow origin assignment without scheme" do + expect(lambda do + @uri.origin = "example.com" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should not allow origin assignment without host" do + expect(lambda do + @uri.origin = "http://" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should not allow origin assignment with bogus type" do + expect(lambda do + @uri.origin = :bogus + end).to raise_error(TypeError) + end + + # Section 6.2.3 of RFC 3986 + it "should be equivalent to http://example.com/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com/")) + end + + # Section 6.2.3 of RFC 3986 + it "should be equivalent to http://example.com:/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com:/")) + end + + # Section 6.2.3 of RFC 3986 + it "should be equivalent to http://example.com:80/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com:80/")) + end + + # Section 6.2.2.1 of RFC 3986 + it "should be equivalent to http://EXAMPLE.COM/" do + expect(@uri).to eq(Addressable::URI.parse("http://EXAMPLE.COM/")) + end + + it "should have a route of '/path/' to 'http://example.com/path/'" do + expect(@uri.route_to("http://example.com/path/")).to eq( + Addressable::URI.parse("/path/") + ) + end + + it "should have a route of '..' from 'http://example.com/path/'" do + expect(@uri.route_from("http://example.com/path/")).to eq( + Addressable::URI.parse("..") + ) + end + + it "should have a route of '#' to 'http://example.com/'" do + expect(@uri.route_to("http://example.com/")).to eq( + Addressable::URI.parse("#") + ) + end + + it "should have a route of 'http://elsewhere.com/' to " + + "'http://elsewhere.com/'" do + expect(@uri.route_to("http://elsewhere.com/")).to eq( + Addressable::URI.parse("http://elsewhere.com/") + ) + end + + it "when joined with 'relative/path' should be " + + "'http://example.com/relative/path'" do + expect(@uri.join('relative/path')).to eq( + Addressable::URI.parse("http://example.com/relative/path") + ) + end + + it "when joined with a bogus object a TypeError should be raised" do + expect(lambda do + @uri.join(42) + end).to raise_error(TypeError) + end + + it "should have the correct username after assignment" do + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq(nil) + expect(@uri.to_s).to eq("http://newuser@example.com") + end + + it "should have the correct username after assignment" do + @uri.user = "user@123!" + expect(@uri.user).to eq("user@123!") + expect(@uri.normalized_user).to eq("user%40123%21") + expect(@uri.password).to eq(nil) + expect(@uri.normalize.to_s).to eq("http://user%40123%21@example.com/") + end + + it "should have the correct password after assignment" do + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + expect(@uri.user).to eq("") + expect(@uri.to_s).to eq("http://:newpass@example.com") + end + + it "should have the correct password after assignment" do + @uri.password = "#secret@123!" + expect(@uri.password).to eq("#secret@123!") + expect(@uri.normalized_password).to eq("%23secret%40123%21") + expect(@uri.user).to eq("") + expect(@uri.normalize.to_s).to eq("http://:%23secret%40123%21@example.com/") + expect(@uri.omit(:password).to_s).to eq("http://example.com") + end + + it "should have the correct user/pass after repeated assignment" do + @uri.user = nil + expect(@uri.user).to eq(nil) + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + # Username cannot be nil if the password is set + expect(@uri.user).to eq("") + expect(@uri.to_s).to eq("http://:newpass@example.com") + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + @uri.password = nil + expect(@uri.password).to eq(nil) + expect(@uri.to_s).to eq("http://newuser@example.com") + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + @uri.password = "" + expect(@uri.password).to eq("") + expect(@uri.to_s).to eq("http://newuser:@example.com") + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + @uri.user = nil + # Username cannot be nil if the password is set + expect(@uri.user).to eq("") + expect(@uri.to_s).to eq("http://:newpass@example.com") + end + + it "should have the correct user/pass after userinfo assignment" do + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + @uri.userinfo = nil + expect(@uri.userinfo).to eq(nil) + expect(@uri.user).to eq(nil) + expect(@uri.password).to eq(nil) + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "http", + :user => nil, + :password => nil, + :host => "example.com", + :port => nil, + :path => "", + :query => nil, + :fragment => nil + }) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end +end + +# Section 5.1.2 of RFC 2616 +describe Addressable::URI, "when parsed from " + + "'http://www.w3.org/pub/WWW/TheProject.html'" do + before do + @uri = Addressable::URI.parse("http://www.w3.org/pub/WWW/TheProject.html") + end + + it "should have the correct request URI" do + expect(@uri.request_uri).to eq("/pub/WWW/TheProject.html") + end + + it "should have the correct request URI after assignment" do + @uri.request_uri = "/some/where/else.html?query?string" + expect(@uri.request_uri).to eq("/some/where/else.html?query?string") + expect(@uri.path).to eq("/some/where/else.html") + expect(@uri.query).to eq("query?string") + end + + it "should have the correct request URI after assignment" do + @uri.request_uri = "?x=y" + expect(@uri.request_uri).to eq("/?x=y") + expect(@uri.path).to eq("/") + expect(@uri.query).to eq("x=y") + end + + it "should raise an error if the site value is set to something bogus" do + expect(lambda do + @uri.site = 42 + end).to raise_error(TypeError) + end + + it "should raise an error if the request URI is set to something bogus" do + expect(lambda do + @uri.request_uri = 42 + end).to raise_error(TypeError) + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "http", + :user => nil, + :password => nil, + :host => "www.w3.org", + :port => nil, + :path => "/pub/WWW/TheProject.html", + :query => nil, + :fragment => nil + }) + end + + it "should have an origin of 'http://www.w3.org'" do + expect(@uri.origin).to eq('http://www.w3.org') + end +end + +describe Addressable::URI, "when parsing IPv6 addresses" do + it "should not raise an error for " + + "'http://[3ffe:1900:4545:3:200:f8ff:fe21:67cf]/'" do + Addressable::URI.parse("http://[3ffe:1900:4545:3:200:f8ff:fe21:67cf]/") + end + + it "should not raise an error for " + + "'http://[fe80:0:0:0:200:f8ff:fe21:67cf]/'" do + Addressable::URI.parse("http://[fe80:0:0:0:200:f8ff:fe21:67cf]/") + end + + it "should not raise an error for " + + "'http://[fe80::200:f8ff:fe21:67cf]/'" do + Addressable::URI.parse("http://[fe80::200:f8ff:fe21:67cf]/") + end + + it "should not raise an error for " + + "'http://[::1]/'" do + Addressable::URI.parse("http://[::1]/") + end + + it "should not raise an error for " + + "'http://[fe80::1]/'" do + Addressable::URI.parse("http://[fe80::1]/") + end + + it "should raise an error for " + + "'http://[]/'" do + expect(lambda do + Addressable::URI.parse("http://[]/") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when parsing IPv6 address" do + subject { Addressable::URI.parse("http://[3ffe:1900:4545:3:200:f8ff:fe21:67cf]/") } + its(:host) { should == '[3ffe:1900:4545:3:200:f8ff:fe21:67cf]' } + its(:hostname) { should == '3ffe:1900:4545:3:200:f8ff:fe21:67cf' } +end + +describe Addressable::URI, "when assigning IPv6 address" do + it "should allow to set bare IPv6 address as hostname" do + uri = Addressable::URI.parse("http://[::1]/") + uri.hostname = '3ffe:1900:4545:3:200:f8ff:fe21:67cf' + expect(uri.to_s).to eq('http://[3ffe:1900:4545:3:200:f8ff:fe21:67cf]/') + end + + it "should allow to set bare IPv6 address as hostname with IPAddr object" do + uri = Addressable::URI.parse("http://[::1]/") + uri.hostname = IPAddr.new('3ffe:1900:4545:3:200:f8ff:fe21:67cf') + expect(uri.to_s).to eq('http://[3ffe:1900:4545:3:200:f8ff:fe21:67cf]/') + end + + it "should not allow to set bare IPv6 address as host" do + uri = Addressable::URI.parse("http://[::1]/") + skip "not checked" + expect(lambda do + uri.host = '3ffe:1900:4545:3:200:f8ff:fe21:67cf' + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when parsing IPvFuture addresses" do + it "should not raise an error for " + + "'http://[v9.3ffe:1900:4545:3:200:f8ff:fe21:67cf]/'" do + Addressable::URI.parse("http://[v9.3ffe:1900:4545:3:200:f8ff:fe21:67cf]/") + end + + it "should not raise an error for " + + "'http://[vff.fe80:0:0:0:200:f8ff:fe21:67cf]/'" do + Addressable::URI.parse("http://[vff.fe80:0:0:0:200:f8ff:fe21:67cf]/") + end + + it "should not raise an error for " + + "'http://[v12.fe80::200:f8ff:fe21:67cf]/'" do + Addressable::URI.parse("http://[v12.fe80::200:f8ff:fe21:67cf]/") + end + + it "should not raise an error for " + + "'http://[va0.::1]/'" do + Addressable::URI.parse("http://[va0.::1]/") + end + + it "should not raise an error for " + + "'http://[v255.fe80::1]/'" do + Addressable::URI.parse("http://[v255.fe80::1]/") + end + + it "should raise an error for " + + "'http://[v0.]/'" do + expect(lambda do + Addressable::URI.parse("http://[v0.]/") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/'" do + before do + @uri = Addressable::URI.parse("http://example.com/") + end + + # Based on http://intertwingly.net/blog/2004/07/31/URI-Equivalence + it "should be equivalent to http://example.com" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com")) + end + + # Based on http://intertwingly.net/blog/2004/07/31/URI-Equivalence + it "should be equivalent to HTTP://example.com/" do + expect(@uri).to eq(Addressable::URI.parse("HTTP://example.com/")) + end + + # Based on http://intertwingly.net/blog/2004/07/31/URI-Equivalence + it "should be equivalent to http://example.com:/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com:/")) + end + + # Based on http://intertwingly.net/blog/2004/07/31/URI-Equivalence + it "should be equivalent to http://example.com:80/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com:80/")) + end + + # Based on http://intertwingly.net/blog/2004/07/31/URI-Equivalence + it "should be equivalent to http://Example.com/" do + expect(@uri).to eq(Addressable::URI.parse("http://Example.com/")) + end + + it "should have the correct username after assignment" do + @uri.user = nil + expect(@uri.user).to eq(nil) + expect(@uri.password).to eq(nil) + expect(@uri.to_s).to eq("http://example.com/") + end + + it "should have the correct password after assignment" do + @uri.password = nil + expect(@uri.password).to eq(nil) + expect(@uri.user).to eq(nil) + expect(@uri.to_s).to eq("http://example.com/") + end + + it "should have a request URI of '/'" do + expect(@uri.request_uri).to eq("/") + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "http", + :user => nil, + :password => nil, + :host => "example.com", + :port => nil, + :path => "/", + :query => nil, + :fragment => nil + }) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have the same hash as its duplicate" do + expect(@uri.hash).to eq(@uri.dup.hash) + end + + it "should have a different hash from its equivalent String value" do + expect(@uri.hash).not_to eq(@uri.to_s.hash) + end + + it "should have the same hash as an equal URI" do + expect(@uri.hash).to eq(Addressable::URI.parse("http://example.com/").hash) + end + + it "should be equivalent to http://EXAMPLE.com" do + expect(@uri).to eq(Addressable::URI.parse("http://EXAMPLE.com")) + end + + it "should be equivalent to http://EXAMPLE.com:80/" do + expect(@uri).to eq(Addressable::URI.parse("http://EXAMPLE.com:80/")) + end + + it "should have the same hash as http://example.com/" do + expect(@uri.hash).to eq(Addressable::URI.parse("http://example.com/").hash) + end + + it "should have the same hash as http://example.com after assignment" do + @uri.path = "" + expect(@uri.hash).to eq(Addressable::URI.parse("http://example.com").hash) + end + + it "should have the same hash as http://example.com/? after assignment" do + @uri.query = "" + expect(@uri.hash).to eq(Addressable::URI.parse("http://example.com/?").hash) + end + + it "should have the same hash as http://example.com/? after assignment" do + @uri.query_values = {} + expect(@uri.hash).to eq(Addressable::URI.parse("http://example.com/?").hash) + end + + it "should have the same hash as http://example.com/# after assignment" do + @uri.fragment = "" + expect(@uri.hash).to eq(Addressable::URI.parse("http://example.com/#").hash) + end + + it "should have a different hash from http://example.com" do + expect(@uri.hash).not_to eq(Addressable::URI.parse("http://example.com").hash) + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com?#'" do + before do + @uri = Addressable::URI.parse("http://example.com?#") + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "http", + :user => nil, + :password => nil, + :host => "example.com", + :port => nil, + :path => "", + :query => "", + :fragment => "" + }) + end + + it "should have a request URI of '/?'" do + expect(@uri.request_uri).to eq("/?") + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq("http://example.com") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://@example.com/'" do + before do + @uri = Addressable::URI.parse("http://@example.com/") + end + + it "should be equivalent to http://example.com" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com")) + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "http", + :user => "", + :password => nil, + :host => "example.com", + :port => nil, + :path => "/", + :query => nil, + :fragment => nil + }) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com./'" do + before do + @uri = Addressable::URI.parse("http://example.com./") + end + + it "should be equivalent to http://example.com" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com")) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://:@example.com/'" do + before do + @uri = Addressable::URI.parse("http://:@example.com/") + end + + it "should be equivalent to http://example.com" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com")) + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "http", + :user => "", + :password => "", + :host => "example.com", + :port => nil, + :path => "/", + :query => nil, + :fragment => nil + }) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'HTTP://EXAMPLE.COM/'" do + before do + @uri = Addressable::URI.parse("HTTP://EXAMPLE.COM/") + end + + it "should be equivalent to http://example.com" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com")) + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "HTTP", + :user => nil, + :password => nil, + :host => "EXAMPLE.COM", + :port => nil, + :path => "/", + :query => nil, + :fragment => nil + }) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end + + it "should have a tld of 'com'" do + expect(@uri.tld).to eq('com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://www.example.co.uk/'" do + before do + @uri = Addressable::URI.parse("http://www.example.co.uk/") + end + + it "should have an origin of 'http://www.example.co.uk'" do + expect(@uri.origin).to eq('http://www.example.co.uk') + end + + it "should have a tld of 'co.uk'" do + expect(@uri.tld).to eq('co.uk') + end + + it "should have a domain of 'example.co.uk'" do + expect(@uri.domain).to eq('example.co.uk') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://sub_domain.blogspot.com/'" do + before do + @uri = Addressable::URI.parse("http://sub_domain.blogspot.com/") + end + + it "should have an origin of 'http://sub_domain.blogspot.com'" do + expect(@uri.origin).to eq('http://sub_domain.blogspot.com') + end + + it "should have a tld of 'com'" do + expect(@uri.tld).to eq('com') + end + + it "should have a domain of 'blogspot.com'" do + expect(@uri.domain).to eq('blogspot.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/~smith/'" do + before do + @uri = Addressable::URI.parse("http://example.com/~smith/") + end + + # Based on http://intertwingly.net/blog/2004/07/31/URI-Equivalence + it "should be equivalent to http://example.com/%7Esmith/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com/%7Esmith/")) + end + + # Based on http://intertwingly.net/blog/2004/07/31/URI-Equivalence + it "should be equivalent to http://example.com/%7esmith/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com/%7esmith/")) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/%E8'" do + before do + @uri = Addressable::URI.parse("http://example.com/%E8") + end + + it "should not raise an exception when normalized" do + expect(lambda do + @uri.normalize + end).not_to raise_error + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should not change if encoded with the normalizing algorithm" do + expect(Addressable::URI.normalized_encode(@uri).to_s).to eq( + "http://example.com/%E8" + ) + expect(Addressable::URI.normalized_encode(@uri, Addressable::URI).to_s).to be === + "http://example.com/%E8" + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/path%2Fsegment/'" do + before do + @uri = Addressable::URI.parse("http://example.com/path%2Fsegment/") + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should be equal to 'http://example.com/path%2Fsegment/'" do + expect(@uri.normalize).to be_eql( + Addressable::URI.parse("http://example.com/path%2Fsegment/") + ) + end + + it "should not be equal to 'http://example.com/path/segment/'" do + expect(@uri).not_to eq( + Addressable::URI.parse("http://example.com/path/segment/") + ) + end + + it "should not be equal to 'http://example.com/path/segment/'" do + expect(@uri.normalize).not_to be_eql( + Addressable::URI.parse("http://example.com/path/segment/") + ) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?%F6'" do + before do + @uri = Addressable::URI.parse("http://example.com/?%F6") + end + + it "should not raise an exception when normalized" do + expect(lambda do + @uri.normalize + end).not_to raise_error + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should not change if encoded with the normalizing algorithm" do + expect(Addressable::URI.normalized_encode(@uri).to_s).to eq( + "http://example.com/?%F6" + ) + expect(Addressable::URI.normalized_encode(@uri, Addressable::URI).to_s).to be === + "http://example.com/?%F6" + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/#%F6'" do + before do + @uri = Addressable::URI.parse("http://example.com/#%F6") + end + + it "should not raise an exception when normalized" do + expect(lambda do + @uri.normalize + end).not_to raise_error + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should not change if encoded with the normalizing algorithm" do + expect(Addressable::URI.normalized_encode(@uri).to_s).to eq( + "http://example.com/#%F6" + ) + expect(Addressable::URI.normalized_encode(@uri, Addressable::URI).to_s).to be === + "http://example.com/#%F6" + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/%C3%87'" do + before do + @uri = Addressable::URI.parse("http://example.com/%C3%87") + end + + # Based on http://intertwingly.net/blog/2004/07/31/URI-Equivalence + it "should be equivalent to 'http://example.com/C%CC%A7'" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com/C%CC%A7")) + end + + it "should not change if encoded with the normalizing algorithm" do + expect(Addressable::URI.normalized_encode(@uri).to_s).to eq( + "http://example.com/%C3%87" + ) + expect(Addressable::URI.normalized_encode(@uri, Addressable::URI).to_s).to be === + "http://example.com/%C3%87" + end + + it "should raise an error if encoding with an unexpected return type" do + expect(lambda do + Addressable::URI.normalized_encode(@uri, Integer) + end).to raise_error(TypeError) + end + + it "if percent encoded should be 'http://example.com/C%25CC%25A7'" do + expect(Addressable::URI.encode(@uri).to_s).to eq( + "http://example.com/%25C3%2587" + ) + end + + it "if percent encoded should be 'http://example.com/C%25CC%25A7'" do + expect(Addressable::URI.encode(@uri, Addressable::URI)).to eq( + Addressable::URI.parse("http://example.com/%25C3%2587") + ) + end + + it "should raise an error if encoding with an unexpected return type" do + expect(lambda do + Addressable::URI.encode(@uri, Integer) + end).to raise_error(TypeError) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?q=string'" do + before do + @uri = Addressable::URI.parse("http://example.com/?q=string") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have an authority segment of 'example.com'" do + expect(@uri.authority).to eq("example.com") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a path of '/'" do + expect(@uri.path).to eq("/") + end + + it "should have a query string of 'q=string'" do + expect(@uri.query).to eq("q=string") + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "should be considered absolute" do + expect(@uri).to be_absolute + end + + it "should not be considered relative" do + expect(@uri).not_to be_relative + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com:80/'" do + before do + @uri = Addressable::URI.parse("http://example.com:80/") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have an authority segment of 'example.com:80'" do + expect(@uri.authority).to eq("example.com:80") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have explicit port 80" do + expect(@uri.port).to eq(80) + end + + it "should have a path of '/'" do + expect(@uri.path).to eq("/") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "should be considered absolute" do + expect(@uri).to be_absolute + end + + it "should not be considered relative" do + expect(@uri).not_to be_relative + end + + it "should be exactly equal to http://example.com:80/" do + expect(@uri.eql?(Addressable::URI.parse("http://example.com:80/"))).to eq(true) + end + + it "should be roughly equal to http://example.com/" do + expect(@uri === Addressable::URI.parse("http://example.com/")).to eq(true) + end + + it "should be roughly equal to the string 'http://example.com/'" do + expect(@uri === "http://example.com/").to eq(true) + end + + it "should not be roughly equal to the string " + + "'http://example.com:bogus/'" do + expect(lambda do + expect(@uri === "http://example.com:bogus/").to eq(false) + end).not_to raise_error + end + + it "should result in itself when joined with itself" do + expect(@uri.join(@uri).to_s).to eq("http://example.com:80/") + expect(@uri.join!(@uri).to_s).to eq("http://example.com:80/") + end + + # Section 6.2.3 of RFC 3986 + it "should be equal to http://example.com/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com/")) + end + + # Section 6.2.3 of RFC 3986 + it "should be equal to http://example.com:/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com:/")) + end + + # Section 6.2.3 of RFC 3986 + it "should be equal to http://example.com:80/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com:80/")) + end + + # Section 6.2.2.1 of RFC 3986 + it "should be equal to http://EXAMPLE.COM/" do + expect(@uri).to eq(Addressable::URI.parse("http://EXAMPLE.COM/")) + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "http", + :user => nil, + :password => nil, + :host => "example.com", + :port => 80, + :path => "/", + :query => nil, + :fragment => nil + }) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end + + it "should not change if encoded with the normalizing algorithm" do + expect(Addressable::URI.normalized_encode(@uri).to_s).to eq( + "http://example.com:80/" + ) + expect(Addressable::URI.normalized_encode(@uri, Addressable::URI).to_s).to be === + "http://example.com:80/" + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com:8080/'" do + before do + @uri = Addressable::URI.parse("http://example.com:8080/") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have an authority segment of 'example.com:8080'" do + expect(@uri.authority).to eq("example.com:8080") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should use port 8080" do + expect(@uri.inferred_port).to eq(8080) + end + + it "should have explicit port 8080" do + expect(@uri.port).to eq(8080) + end + + it "should have default port 80" do + expect(@uri.default_port).to eq(80) + end + + it "should have a path of '/'" do + expect(@uri.path).to eq("/") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "should be considered absolute" do + expect(@uri).to be_absolute + end + + it "should not be considered relative" do + expect(@uri).not_to be_relative + end + + it "should be exactly equal to http://example.com:8080/" do + expect(@uri.eql?(Addressable::URI.parse( + "http://example.com:8080/"))).to eq(true) + end + + it "should have a route of 'http://example.com:8080/' from " + + "'http://example.com/path/to/'" do + expect(@uri.route_from("http://example.com/path/to/")).to eq( + Addressable::URI.parse("http://example.com:8080/") + ) + end + + it "should have a route of 'http://example.com:8080/' from " + + "'http://example.com:80/path/to/'" do + expect(@uri.route_from("http://example.com:80/path/to/")).to eq( + Addressable::URI.parse("http://example.com:8080/") + ) + end + + it "should have a route of '../../' from " + + "'http://example.com:8080/path/to/'" do + expect(@uri.route_from("http://example.com:8080/path/to/")).to eq( + Addressable::URI.parse("../../") + ) + end + + it "should have a route of 'http://example.com:8080/' from " + + "'http://user:pass@example.com/path/to/'" do + expect(@uri.route_from("http://user:pass@example.com/path/to/")).to eq( + Addressable::URI.parse("http://example.com:8080/") + ) + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "http", + :user => nil, + :password => nil, + :host => "example.com", + :port => 8080, + :path => "/", + :query => nil, + :fragment => nil + }) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have an origin of 'http://example.com:8080'" do + expect(@uri.origin).to eq('http://example.com:8080') + end + + it "should not change if encoded with the normalizing algorithm" do + expect(Addressable::URI.normalized_encode(@uri).to_s).to eq( + "http://example.com:8080/" + ) + expect(Addressable::URI.normalized_encode(@uri, Addressable::URI).to_s).to be === + "http://example.com:8080/" + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com:%38%30/'" do + before do + @uri = Addressable::URI.parse("http://example.com:%38%30/") + end + + it "should have the correct port" do + expect(@uri.port).to eq(80) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/%2E/'" do + before do + @uri = Addressable::URI.parse("http://example.com/%2E/") + end + + it "should be considered to be in normal form" do + skip( + 'path segment normalization should happen before ' + + 'percent escaping normalization' + ) + @uri.normalize.should be_eql(@uri) + end + + it "should normalize to 'http://example.com/%2E/'" do + skip( + 'path segment normalization should happen before ' + + 'percent escaping normalization' + ) + expect(@uri.normalize).to eq("http://example.com/%2E/") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/..'" do + before do + @uri = Addressable::URI.parse("http://example.com/..") + end + + it "should have the correct port" do + expect(@uri.inferred_port).to eq(80) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/../..'" do + before do + @uri = Addressable::URI.parse("http://example.com/../..") + end + + it "should have the correct port" do + expect(@uri.inferred_port).to eq(80) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/path(/..'" do + before do + @uri = Addressable::URI.parse("http://example.com/path(/..") + end + + it "should have the correct port" do + expect(@uri.inferred_port).to eq(80) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/(path)/..'" do + before do + @uri = Addressable::URI.parse("http://example.com/(path)/..") + end + + it "should have the correct port" do + expect(@uri.inferred_port).to eq(80) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/path(/../'" do + before do + @uri = Addressable::URI.parse("http://example.com/path(/../") + end + + it "should have the correct port" do + expect(@uri.inferred_port).to eq(80) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/(path)/../'" do + before do + @uri = Addressable::URI.parse("http://example.com/(path)/../") + end + + it "should have the correct port" do + expect(@uri.inferred_port).to eq(80) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + end +end + +describe Addressable::URI, "when parsed from " + + "'/..//example.com'" do + before do + @uri = Addressable::URI.parse("/..//example.com") + end + + it "should become invalid when normalized" do + expect(lambda do + @uri.normalize + end).to raise_error(Addressable::URI::InvalidURIError, /authority/) + end + + it "should have a path of '/..//example.com'" do + expect(@uri.path).to eq("/..//example.com") + end +end + +describe Addressable::URI, "when parsed from '/a/b/c/./../../g'" do + before do + @uri = Addressable::URI.parse("/a/b/c/./../../g") + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + # Section 5.2.4 of RFC 3986 + it "should normalize to '/a/g'" do + expect(@uri.normalize.to_s).to eq("/a/g") + end +end + +describe Addressable::URI, "when parsed from 'mid/content=5/../6'" do + before do + @uri = Addressable::URI.parse("mid/content=5/../6") + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + # Section 5.2.4 of RFC 3986 + it "should normalize to 'mid/6'" do + expect(@uri.normalize.to_s).to eq("mid/6") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://www.example.com///../'" do + before do + @uri = Addressable::URI.parse('http://www.example.com///../') + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should normalize to 'http://www.example.com//'" do + expect(@uri.normalize.to_s).to eq("http://www.example.com//") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/path/to/resource/'" do + before do + @uri = Addressable::URI.parse("http://example.com/path/to/resource/") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have an authority segment of 'example.com'" do + expect(@uri.authority).to eq("example.com") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a path of '/path/to/resource/'" do + expect(@uri.path).to eq("/path/to/resource/") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "should be considered absolute" do + expect(@uri).to be_absolute + end + + it "should not be considered relative" do + expect(@uri).not_to be_relative + end + + it "should be exactly equal to http://example.com:8080/" do + expect(@uri.eql?(Addressable::URI.parse( + "http://example.com/path/to/resource/"))).to eq(true) + end + + it "should have a route of 'resource/' from " + + "'http://example.com/path/to/'" do + expect(@uri.route_from("http://example.com/path/to/")).to eq( + Addressable::URI.parse("resource/") + ) + end + + it "should have a route of '../' from " + + "'http://example.com/path/to/resource/sub'" do + expect(@uri.route_from("http://example.com/path/to/resource/sub")).to eq( + Addressable::URI.parse("../") + ) + end + + + it "should have a route of 'resource/' from " + + "'http://example.com/path/to/another'" do + expect(@uri.route_from("http://example.com/path/to/another")).to eq( + Addressable::URI.parse("resource/") + ) + end + + it "should have a route of 'resource/' from " + + "'http://example.com/path/to/res'" do + expect(@uri.route_from("http://example.com/path/to/res")).to eq( + Addressable::URI.parse("resource/") + ) + end + + it "should have a route of 'resource/' from " + + "'http://example.com:80/path/to/'" do + expect(@uri.route_from("http://example.com:80/path/to/")).to eq( + Addressable::URI.parse("resource/") + ) + end + + it "should have a route of 'http://example.com/path/to/' from " + + "'http://example.com:8080/path/to/'" do + expect(@uri.route_from("http://example.com:8080/path/to/")).to eq( + Addressable::URI.parse("http://example.com/path/to/resource/") + ) + end + + it "should have a route of 'http://example.com/path/to/' from " + + "'http://user:pass@example.com/path/to/'" do + expect(@uri.route_from("http://user:pass@example.com/path/to/")).to eq( + Addressable::URI.parse("http://example.com/path/to/resource/") + ) + end + + it "should have a route of '../../path/to/resource/' from " + + "'http://example.com/to/resource/'" do + expect(@uri.route_from("http://example.com/to/resource/")).to eq( + Addressable::URI.parse("../../path/to/resource/") + ) + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "http", + :user => nil, + :password => nil, + :host => "example.com", + :port => nil, + :path => "/path/to/resource/", + :query => nil, + :fragment => nil + }) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end +end + +describe Addressable::URI, "when parsed from " + + "'relative/path/to/resource'" do + before do + @uri = Addressable::URI.parse("relative/path/to/resource") + end + + it "should not have a scheme" do + expect(@uri.scheme).to eq(nil) + end + + it "should not be considered ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should not have an authority segment" do + expect(@uri.authority).to eq(nil) + end + + it "should not have a host" do + expect(@uri.host).to eq(nil) + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should not have a port" do + expect(@uri.port).to eq(nil) + end + + it "should have a path of 'relative/path/to/resource'" do + expect(@uri.path).to eq("relative/path/to/resource") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "should not be considered absolute" do + expect(@uri).not_to be_absolute + end + + it "should be considered relative" do + expect(@uri).to be_relative + end + + it "should raise an error if routing is attempted" do + expect(lambda do + @uri.route_to("http://example.com/") + end).to raise_error(ArgumentError, /relative\/path\/to\/resource/) + expect(lambda do + @uri.route_from("http://example.com/") + end).to raise_error(ArgumentError, /relative\/path\/to\/resource/) + end + + it "when joined with 'another/relative/path' should be " + + "'relative/path/to/another/relative/path'" do + expect(@uri.join('another/relative/path')).to eq( + Addressable::URI.parse("relative/path/to/another/relative/path") + ) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end +end + +describe Addressable::URI, "when parsed from " + + "'relative_path_with_no_slashes'" do + before do + @uri = Addressable::URI.parse("relative_path_with_no_slashes") + end + + it "should not have a scheme" do + expect(@uri.scheme).to eq(nil) + end + + it "should not be considered ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should not have an authority segment" do + expect(@uri.authority).to eq(nil) + end + + it "should not have a host" do + expect(@uri.host).to eq(nil) + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should not have a port" do + expect(@uri.port).to eq(nil) + end + + it "should have a path of 'relative_path_with_no_slashes'" do + expect(@uri.path).to eq("relative_path_with_no_slashes") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "should not be considered absolute" do + expect(@uri).not_to be_absolute + end + + it "should be considered relative" do + expect(@uri).to be_relative + end + + it "when joined with 'another_relative_path' should be " + + "'another_relative_path'" do + expect(@uri.join('another_relative_path')).to eq( + Addressable::URI.parse("another_relative_path") + ) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/file.txt'" do + before do + @uri = Addressable::URI.parse("http://example.com/file.txt") + end + + it "should have a scheme of 'http'" do + expect(@uri.scheme).to eq("http") + end + + it "should have an authority segment of 'example.com'" do + expect(@uri.authority).to eq("example.com") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a path of '/file.txt'" do + expect(@uri.path).to eq("/file.txt") + end + + it "should have a basename of 'file.txt'" do + expect(@uri.basename).to eq("file.txt") + end + + it "should have an extname of '.txt'" do + expect(@uri.extname).to eq(".txt") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/file.txt;parameter'" do + before do + @uri = Addressable::URI.parse("http://example.com/file.txt;parameter") + end + + it "should have a scheme of 'http'" do + expect(@uri.scheme).to eq("http") + end + + it "should have an authority segment of 'example.com'" do + expect(@uri.authority).to eq("example.com") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a path of '/file.txt;parameter'" do + expect(@uri.path).to eq("/file.txt;parameter") + end + + it "should have a basename of 'file.txt'" do + expect(@uri.basename).to eq("file.txt") + end + + it "should have an extname of '.txt'" do + expect(@uri.extname).to eq(".txt") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/file.txt;x=y'" do + before do + @uri = Addressable::URI.parse("http://example.com/file.txt;x=y") + end + + it "should have a scheme of 'http'" do + expect(@uri.scheme).to eq("http") + end + + it "should have a scheme of 'http'" do + expect(@uri.scheme).to eq("http") + end + + it "should have an authority segment of 'example.com'" do + expect(@uri.authority).to eq("example.com") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a path of '/file.txt;x=y'" do + expect(@uri.path).to eq("/file.txt;x=y") + end + + it "should have an extname of '.txt'" do + expect(@uri.extname).to eq(".txt") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end +end + +describe Addressable::URI, "when parsed from " + + "'svn+ssh://developername@rubyforge.org/var/svn/project'" do + before do + @uri = Addressable::URI.parse( + "svn+ssh://developername@rubyforge.org/var/svn/project" + ) + end + + it "should have a scheme of 'svn+ssh'" do + expect(@uri.scheme).to eq("svn+ssh") + end + + it "should be considered to be ip-based" do + expect(@uri).to be_ip_based + end + + it "should have a path of '/var/svn/project'" do + expect(@uri.path).to eq("/var/svn/project") + end + + it "should have a username of 'developername'" do + expect(@uri.user).to eq("developername") + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end +end + +describe Addressable::URI, "when parsed from " + + "'ssh+svn://developername@RUBYFORGE.ORG/var/svn/project'" do + before do + @uri = Addressable::URI.parse( + "ssh+svn://developername@RUBYFORGE.ORG/var/svn/project" + ) + end + + it "should have a scheme of 'ssh+svn'" do + expect(@uri.scheme).to eq("ssh+svn") + end + + it "should have a normalized scheme of 'svn+ssh'" do + expect(@uri.normalized_scheme).to eq("svn+ssh") + end + + it "should have a normalized site of 'svn+ssh'" do + expect(@uri.normalized_site).to eq("svn+ssh://developername@rubyforge.org") + end + + it "should not be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should have a path of '/var/svn/project'" do + expect(@uri.path).to eq("/var/svn/project") + end + + it "should have a username of 'developername'" do + expect(@uri.user).to eq("developername") + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end +end + +describe Addressable::URI, "when parsed from " + + "'mailto:user@example.com'" do + before do + @uri = Addressable::URI.parse("mailto:user@example.com") + end + + it "should have a scheme of 'mailto'" do + expect(@uri.scheme).to eq("mailto") + end + + it "should not be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should have a path of 'user@example.com'" do + expect(@uri.path).to eq("user@example.com") + end + + it "should have no user" do + expect(@uri.user).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end +end + +describe Addressable::URI, "when parsed from " + + "'tag:example.com,2006-08-18:/path/to/something'" do + before do + @uri = Addressable::URI.parse( + "tag:example.com,2006-08-18:/path/to/something") + end + + it "should have a scheme of 'tag'" do + expect(@uri.scheme).to eq("tag") + end + + it "should be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should have a path of " + + "'example.com,2006-08-18:/path/to/something'" do + expect(@uri.path).to eq("example.com,2006-08-18:/path/to/something") + end + + it "should have no user" do + expect(@uri.user).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/x;y/'" do + before do + @uri = Addressable::URI.parse("http://example.com/x;y/") + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?x=1&y=2'" do + before do + @uri = Addressable::URI.parse("http://example.com/?x=1&y=2") + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end +end + +describe Addressable::URI, "when parsed from " + + "'view-source:http://example.com/'" do + before do + @uri = Addressable::URI.parse("view-source:http://example.com/") + end + + it "should have a scheme of 'view-source'" do + expect(@uri.scheme).to eq("view-source") + end + + it "should have a path of 'http://example.com/'" do + expect(@uri.path).to eq("http://example.com/") + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://user:pass@example.com/path/to/resource?query=x#fragment'" do + before do + @uri = Addressable::URI.parse( + "http://user:pass@example.com/path/to/resource?query=x#fragment") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have an authority segment of 'user:pass@example.com'" do + expect(@uri.authority).to eq("user:pass@example.com") + end + + it "should have a username of 'user'" do + expect(@uri.user).to eq("user") + end + + it "should have a password of 'pass'" do + expect(@uri.password).to eq("pass") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a path of '/path/to/resource'" do + expect(@uri.path).to eq("/path/to/resource") + end + + it "should have a query string of 'query=x'" do + expect(@uri.query).to eq("query=x") + end + + it "should have a fragment of 'fragment'" do + expect(@uri.fragment).to eq("fragment") + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a route of '../../' to " + + "'http://user:pass@example.com/path/'" do + expect(@uri.route_to("http://user:pass@example.com/path/")).to eq( + Addressable::URI.parse("../../") + ) + end + + it "should have a route of 'to/resource?query=x#fragment' " + + "from 'http://user:pass@example.com/path/'" do + expect(@uri.route_from("http://user:pass@example.com/path/")).to eq( + Addressable::URI.parse("to/resource?query=x#fragment") + ) + end + + it "should have a route of '?query=x#fragment' " + + "from 'http://user:pass@example.com/path/to/resource'" do + expect(@uri.route_from("http://user:pass@example.com/path/to/resource")).to eq( + Addressable::URI.parse("?query=x#fragment") + ) + end + + it "should have a route of '#fragment' " + + "from 'http://user:pass@example.com/path/to/resource?query=x'" do + expect(@uri.route_from( + "http://user:pass@example.com/path/to/resource?query=x")).to eq( + Addressable::URI.parse("#fragment") + ) + end + + it "should have a route of '#fragment' from " + + "'http://user:pass@example.com/path/to/resource?query=x#fragment'" do + expect(@uri.route_from( + "http://user:pass@example.com/path/to/resource?query=x#fragment" + )).to eq(Addressable::URI.parse("#fragment")) + end + + it "should have a route of 'http://elsewhere.com/' to " + + "'http://elsewhere.com/'" do + expect(@uri.route_to("http://elsewhere.com/")).to eq( + Addressable::URI.parse("http://elsewhere.com/") + ) + end + + it "should have a route of " + + "'http://user:pass@example.com/path/to/resource?query=x#fragment' " + + "from 'http://example.com/path/to/'" do + expect(@uri.route_from("http://elsewhere.com/path/to/")).to eq( + Addressable::URI.parse( + "http://user:pass@example.com/path/to/resource?query=x#fragment") + ) + end + + it "should have the correct scheme after assignment" do + @uri.scheme = "ftp" + expect(@uri.scheme).to eq("ftp") + expect(@uri.to_s).to eq( + "ftp://user:pass@example.com/path/to/resource?query=x#fragment" + ) + expect(@uri.to_str).to eq( + "ftp://user:pass@example.com/path/to/resource?query=x#fragment" + ) + end + + it "should have the correct site segment after assignment" do + @uri.site = "https://newuser:newpass@example.com:443" + expect(@uri.scheme).to eq("https") + expect(@uri.authority).to eq("newuser:newpass@example.com:443") + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq("newpass") + expect(@uri.userinfo).to eq("newuser:newpass") + expect(@uri.normalized_userinfo).to eq("newuser:newpass") + expect(@uri.host).to eq("example.com") + expect(@uri.port).to eq(443) + expect(@uri.inferred_port).to eq(443) + expect(@uri.to_s).to eq( + "https://newuser:newpass@example.com:443" + + "/path/to/resource?query=x#fragment" + ) + end + + it "should have the correct authority segment after assignment" do + @uri.authority = "newuser:newpass@example.com:80" + expect(@uri.authority).to eq("newuser:newpass@example.com:80") + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq("newpass") + expect(@uri.userinfo).to eq("newuser:newpass") + expect(@uri.normalized_userinfo).to eq("newuser:newpass") + expect(@uri.host).to eq("example.com") + expect(@uri.port).to eq(80) + expect(@uri.inferred_port).to eq(80) + expect(@uri.to_s).to eq( + "http://newuser:newpass@example.com:80" + + "/path/to/resource?query=x#fragment" + ) + end + + it "should have the correct userinfo segment after assignment" do + @uri.userinfo = "newuser:newpass" + expect(@uri.userinfo).to eq("newuser:newpass") + expect(@uri.authority).to eq("newuser:newpass@example.com") + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq("newpass") + expect(@uri.host).to eq("example.com") + expect(@uri.port).to eq(nil) + expect(@uri.inferred_port).to eq(80) + expect(@uri.to_s).to eq( + "http://newuser:newpass@example.com" + + "/path/to/resource?query=x#fragment" + ) + end + + it "should have the correct username after assignment" do + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + expect(@uri.authority).to eq("newuser:pass@example.com") + end + + it "should have the correct password after assignment" do + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + expect(@uri.authority).to eq("user:newpass@example.com") + end + + it "should have the correct host after assignment" do + @uri.host = "newexample.com" + expect(@uri.host).to eq("newexample.com") + expect(@uri.authority).to eq("user:pass@newexample.com") + end + + it "should have the correct host after assignment" do + @uri.hostname = "newexample.com" + expect(@uri.host).to eq("newexample.com") + expect(@uri.hostname).to eq("newexample.com") + expect(@uri.authority).to eq("user:pass@newexample.com") + end + + it "should raise an error if assigning a bogus object to the hostname" do + expect(lambda do + @uri.hostname = Object.new + end).to raise_error + end + + it "should have the correct port after assignment" do + @uri.port = 8080 + expect(@uri.port).to eq(8080) + expect(@uri.authority).to eq("user:pass@example.com:8080") + end + + it "should have the correct origin after assignment" do + @uri.origin = "http://newexample.com" + expect(@uri.host).to eq("newexample.com") + expect(@uri.authority).to eq("newexample.com") + end + + it "should have the correct path after assignment" do + @uri.path = "/newpath/to/resource" + expect(@uri.path).to eq("/newpath/to/resource") + expect(@uri.to_s).to eq( + "http://user:pass@example.com/newpath/to/resource?query=x#fragment" + ) + end + + it "should have the correct scheme and authority after nil assignment" do + @uri.site = nil + expect(@uri.scheme).to eq(nil) + expect(@uri.authority).to eq(nil) + expect(@uri.to_s).to eq("/path/to/resource?query=x#fragment") + end + + it "should have the correct scheme and authority after assignment" do + @uri.site = "file://" + expect(@uri.scheme).to eq("file") + expect(@uri.authority).to eq("") + expect(@uri.to_s).to eq("file:///path/to/resource?query=x#fragment") + end + + it "should have the correct path after nil assignment" do + @uri.path = nil + expect(@uri.path).to eq("") + expect(@uri.to_s).to eq( + "http://user:pass@example.com?query=x#fragment" + ) + end + + it "should have the correct query string after assignment" do + @uri.query = "newquery=x" + expect(@uri.query).to eq("newquery=x") + expect(@uri.to_s).to eq( + "http://user:pass@example.com/path/to/resource?newquery=x#fragment" + ) + @uri.query = nil + expect(@uri.query).to eq(nil) + expect(@uri.to_s).to eq( + "http://user:pass@example.com/path/to/resource#fragment" + ) + end + + it "should have the correct query string after hash assignment" do + @uri.query_values = {"?uestion mark" => "=sign", "hello" => "g\xC3\xBCnther"} + expect(@uri.query.split("&")).to include("%3Fuestion%20mark=%3Dsign") + expect(@uri.query.split("&")).to include("hello=g%C3%BCnther") + expect(@uri.query_values).to eq({ + "?uestion mark" => "=sign", "hello" => "g\xC3\xBCnther" + }) + end + + it "should have the correct query string after flag hash assignment" do + @uri.query_values = {'flag?1' => nil, 'fl=ag2' => nil, 'flag3' => nil} + expect(@uri.query.split("&")).to include("flag%3F1") + expect(@uri.query.split("&")).to include("fl%3Dag2") + expect(@uri.query.split("&")).to include("flag3") + expect(@uri.query_values(Array).sort).to eq([["fl=ag2"], ["flag3"], ["flag?1"]]) + expect(@uri.query_values(Hash)).to eq({ + 'flag?1' => nil, 'fl=ag2' => nil, 'flag3' => nil + }) + end + + it "should raise an error if query values are set to a bogus type" do + expect(lambda do + @uri.query_values = "bogus" + end).to raise_error(TypeError) + end + + it "should have the correct fragment after assignment" do + @uri.fragment = "newfragment" + expect(@uri.fragment).to eq("newfragment") + expect(@uri.to_s).to eq( + "http://user:pass@example.com/path/to/resource?query=x#newfragment" + ) + + @uri.fragment = nil + expect(@uri.fragment).to eq(nil) + expect(@uri.to_s).to eq( + "http://user:pass@example.com/path/to/resource?query=x" + ) + end + + it "should have the correct values after a merge" do + expect(@uri.merge(:fragment => "newfragment").to_s).to eq( + "http://user:pass@example.com/path/to/resource?query=x#newfragment" + ) + end + + it "should have the correct values after a merge" do + expect(@uri.merge(:fragment => nil).to_s).to eq( + "http://user:pass@example.com/path/to/resource?query=x" + ) + end + + it "should have the correct values after a merge" do + expect(@uri.merge(:userinfo => "newuser:newpass").to_s).to eq( + "http://newuser:newpass@example.com/path/to/resource?query=x#fragment" + ) + end + + it "should have the correct values after a merge" do + expect(@uri.merge(:userinfo => nil).to_s).to eq( + "http://example.com/path/to/resource?query=x#fragment" + ) + end + + it "should have the correct values after a merge" do + expect(@uri.merge(:path => "newpath").to_s).to eq( + "http://user:pass@example.com/newpath?query=x#fragment" + ) + end + + it "should have the correct values after a merge" do + expect(@uri.merge(:port => "42", :path => "newpath", :query => "").to_s).to eq( + "http://user:pass@example.com:42/newpath?#fragment" + ) + end + + it "should have the correct values after a merge" do + expect(@uri.merge(:authority => "foo:bar@baz:42").to_s).to eq( + "http://foo:bar@baz:42/path/to/resource?query=x#fragment" + ) + # Ensure the operation was not destructive + expect(@uri.to_s).to eq( + "http://user:pass@example.com/path/to/resource?query=x#fragment" + ) + end + + it "should have the correct values after a destructive merge" do + @uri.merge!(:authority => "foo:bar@baz:42") + # Ensure the operation was destructive + expect(@uri.to_s).to eq( + "http://foo:bar@baz:42/path/to/resource?query=x#fragment" + ) + end + + it "should fail to merge with bogus values" do + expect(lambda do + @uri.merge(:port => "bogus") + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should fail to merge with bogus values" do + expect(lambda do + @uri.merge(:authority => "bar@baz:bogus") + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should fail to merge with bogus parameters" do + expect(lambda do + @uri.merge(42) + end).to raise_error(TypeError) + end + + it "should fail to merge with bogus parameters" do + expect(lambda do + @uri.merge("http://example.com/") + end).to raise_error(TypeError) + end + + it "should fail to merge with both authority and subcomponents" do + expect(lambda do + @uri.merge(:authority => "foo:bar@baz:42", :port => "42") + end).to raise_error(ArgumentError) + end + + it "should fail to merge with both userinfo and subcomponents" do + expect(lambda do + @uri.merge(:userinfo => "foo:bar", :user => "foo") + end).to raise_error(ArgumentError) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/search?q=Q%26A'" do + + before do + @uri = Addressable::URI.parse("http://example.com/search?q=Q%26A") + end + + it "should have a query of 'q=Q%26A'" do + expect(@uri.query).to eq("q=Q%26A") + end + + it "should have query_values of {'q' => 'Q&A'}" do + expect(@uri.query_values).to eq({ 'q' => 'Q&A' }) + end + + it "should normalize to the original uri " + + "(with the ampersand properly percent-encoded)" do + expect(@uri.normalize.to_s).to eq("http://example.com/search?q=Q%26A") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?&x=b'" do + before do + @uri = Addressable::URI.parse("http://example.com/?&x=b") + end + + it "should have a query of '&x=b'" do + expect(@uri.query).to eq("&x=b") + end + + it "should have query_values of {'x' => 'b'}" do + expect(@uri.query_values).to eq({'x' => 'b'}) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?q='one;two'&x=1'" do + before do + @uri = Addressable::URI.parse("http://example.com/?q='one;two'&x=1") + end + + it "should have a query of 'q='one;two'&x=1'" do + expect(@uri.query).to eq("q='one;two'&x=1") + end + + it "should have query_values of {\"q\" => \"'one;two'\", \"x\" => \"1\"}" do + expect(@uri.query_values).to eq({"q" => "'one;two'", "x" => "1"}) + end + + it "should escape the ';' character when normalizing to avoid ambiguity " + + "with the W3C HTML 4.01 specification" do + # HTML 4.01 Section B.2.2 + expect(@uri.normalize.query).to eq("q='one%3Btwo'&x=1") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?&&x=b'" do + before do + @uri = Addressable::URI.parse("http://example.com/?&&x=b") + end + + it "should have a query of '&&x=b'" do + expect(@uri.query).to eq("&&x=b") + end + + it "should have query_values of {'x' => 'b'}" do + expect(@uri.query_values).to eq({'x' => 'b'}) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?q=a&&x=b'" do + before do + @uri = Addressable::URI.parse("http://example.com/?q=a&&x=b") + end + + it "should have a query of 'q=a&&x=b'" do + expect(@uri.query).to eq("q=a&&x=b") + end + + it "should have query_values of {'q' => 'a, 'x' => 'b'}" do + expect(@uri.query_values).to eq({'q' => 'a', 'x' => 'b'}) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?q&&x=b'" do + before do + @uri = Addressable::URI.parse("http://example.com/?q&&x=b") + end + + it "should have a query of 'q&&x=b'" do + expect(@uri.query).to eq("q&&x=b") + end + + it "should have query_values of {'q' => true, 'x' => 'b'}" do + expect(@uri.query_values).to eq({'q' => nil, 'x' => 'b'}) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?q=a+b'" do + before do + @uri = Addressable::URI.parse("http://example.com/?q=a+b") + end + + it "should have a query of 'q=a+b'" do + expect(@uri.query).to eq("q=a+b") + end + + it "should have query_values of {'q' => 'a b'}" do + expect(@uri.query_values).to eq({'q' => 'a b'}) + end + + it "should have a normalized query of 'q=a+b'" do + expect(@uri.normalized_query).to eq("q=a+b") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?q=a%2bb'" do + before do + @uri = Addressable::URI.parse("http://example.com/?q=a%2bb") + end + + it "should have a query of 'q=a+b'" do + expect(@uri.query).to eq("q=a%2bb") + end + + it "should have query_values of {'q' => 'a+b'}" do + expect(@uri.query_values).to eq({'q' => 'a+b'}) + end + + it "should have a normalized query of 'q=a%2Bb'" do + expect(@uri.normalized_query).to eq("q=a%2Bb") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?v=%7E&w=%&x=%25&y=%2B&z=C%CC%A7'" do + before do + @uri = Addressable::URI.parse("http://example.com/?v=%7E&w=%&x=%25&y=%2B&z=C%CC%A7") + end + + it "should have a normalized query of 'v=~&w=%25&x=%25&y=%2B&z=%C3%87'" do + expect(@uri.normalized_query).to eq("v=~&w=%25&x=%25&y=%2B&z=%C3%87") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?v=%7E&w=%&x=%25&y=+&z=C%CC%A7'" do + before do + @uri = Addressable::URI.parse("http://example.com/?v=%7E&w=%&x=%25&y=+&z=C%CC%A7") + end + + it "should have a normalized query of 'v=~&w=%25&x=%25&y=+&z=%C3%87'" do + expect(@uri.normalized_query).to eq("v=~&w=%25&x=%25&y=+&z=%C3%87") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/sound%2bvision'" do + before do + @uri = Addressable::URI.parse("http://example.com/sound%2bvision") + end + + it "should have a normalized path of '/sound+vision'" do + expect(@uri.normalized_path).to eq('/sound+vision') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?q='" do + before do + @uri = Addressable::URI.parse("http://example.com/?q=") + end + + it "should have a query of 'q='" do + expect(@uri.query).to eq("q=") + end + + it "should have query_values of {'q' => ''}" do + expect(@uri.query_values).to eq({'q' => ''}) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://user@example.com'" do + before do + @uri = Addressable::URI.parse("http://user@example.com") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have a username of 'user'" do + expect(@uri.user).to eq("user") + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should have a userinfo of 'user'" do + expect(@uri.userinfo).to eq("user") + end + + it "should have a normalized userinfo of 'user'" do + expect(@uri.normalized_userinfo).to eq("user") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have default_port 80" do + expect(@uri.default_port).to eq(80) + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have the correct username after assignment" do + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq(nil) + expect(@uri.to_s).to eq("http://newuser@example.com") + end + + it "should have the correct password after assignment" do + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + expect(@uri.to_s).to eq("http://user:newpass@example.com") + end + + it "should have the correct userinfo segment after assignment" do + @uri.userinfo = "newuser:newpass" + expect(@uri.userinfo).to eq("newuser:newpass") + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq("newpass") + expect(@uri.host).to eq("example.com") + expect(@uri.port).to eq(nil) + expect(@uri.inferred_port).to eq(80) + expect(@uri.to_s).to eq("http://newuser:newpass@example.com") + end + + it "should have the correct userinfo segment after nil assignment" do + @uri.userinfo = nil + expect(@uri.userinfo).to eq(nil) + expect(@uri.user).to eq(nil) + expect(@uri.password).to eq(nil) + expect(@uri.host).to eq("example.com") + expect(@uri.port).to eq(nil) + expect(@uri.inferred_port).to eq(80) + expect(@uri.to_s).to eq("http://example.com") + end + + it "should have the correct authority segment after assignment" do + @uri.authority = "newuser@example.com" + expect(@uri.authority).to eq("newuser@example.com") + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq(nil) + expect(@uri.host).to eq("example.com") + expect(@uri.port).to eq(nil) + expect(@uri.inferred_port).to eq(80) + expect(@uri.to_s).to eq("http://newuser@example.com") + end + + it "should raise an error after nil assignment of authority segment" do + expect(lambda do + # This would create an invalid URI + @uri.authority = nil + end).to raise_error + end +end + +describe Addressable::URI, "when parsed from " + + "'http://user:@example.com'" do + before do + @uri = Addressable::URI.parse("http://user:@example.com") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have a username of 'user'" do + expect(@uri.user).to eq("user") + end + + it "should have a password of ''" do + expect(@uri.password).to eq("") + end + + it "should have a normalized userinfo of 'user:'" do + expect(@uri.normalized_userinfo).to eq("user:") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have the correct username after assignment" do + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq("") + expect(@uri.to_s).to eq("http://newuser:@example.com") + end + + it "should have the correct password after assignment" do + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + expect(@uri.to_s).to eq("http://user:newpass@example.com") + end + + it "should have the correct authority segment after assignment" do + @uri.authority = "newuser:@example.com" + expect(@uri.authority).to eq("newuser:@example.com") + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq("") + expect(@uri.host).to eq("example.com") + expect(@uri.port).to eq(nil) + expect(@uri.inferred_port).to eq(80) + expect(@uri.to_s).to eq("http://newuser:@example.com") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://:pass@example.com'" do + before do + @uri = Addressable::URI.parse("http://:pass@example.com") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have a username of ''" do + expect(@uri.user).to eq("") + end + + it "should have a password of 'pass'" do + expect(@uri.password).to eq("pass") + end + + it "should have a userinfo of ':pass'" do + expect(@uri.userinfo).to eq(":pass") + end + + it "should have a normalized userinfo of ':pass'" do + expect(@uri.normalized_userinfo).to eq(":pass") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have the correct username after assignment" do + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq("pass") + expect(@uri.to_s).to eq("http://newuser:pass@example.com") + end + + it "should have the correct password after assignment" do + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + expect(@uri.user).to eq("") + expect(@uri.to_s).to eq("http://:newpass@example.com") + end + + it "should have the correct authority segment after assignment" do + @uri.authority = ":newpass@example.com" + expect(@uri.authority).to eq(":newpass@example.com") + expect(@uri.user).to eq("") + expect(@uri.password).to eq("newpass") + expect(@uri.host).to eq("example.com") + expect(@uri.port).to eq(nil) + expect(@uri.inferred_port).to eq(80) + expect(@uri.to_s).to eq("http://:newpass@example.com") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://:@example.com'" do + before do + @uri = Addressable::URI.parse("http://:@example.com") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have a username of ''" do + expect(@uri.user).to eq("") + end + + it "should have a password of ''" do + expect(@uri.password).to eq("") + end + + it "should have a normalized userinfo of nil" do + expect(@uri.normalized_userinfo).to eq(nil) + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have the correct username after assignment" do + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq("") + expect(@uri.to_s).to eq("http://newuser:@example.com") + end + + it "should have the correct password after assignment" do + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + expect(@uri.user).to eq("") + expect(@uri.to_s).to eq("http://:newpass@example.com") + end + + it "should have the correct authority segment after assignment" do + @uri.authority = ":@newexample.com" + expect(@uri.authority).to eq(":@newexample.com") + expect(@uri.user).to eq("") + expect(@uri.password).to eq("") + expect(@uri.host).to eq("newexample.com") + expect(@uri.port).to eq(nil) + expect(@uri.inferred_port).to eq(80) + expect(@uri.to_s).to eq("http://:@newexample.com") + end +end + +describe Addressable::URI, "when parsed from " + + "'#example'" do + before do + @uri = Addressable::URI.parse("#example") + end + + it "should be considered relative" do + expect(@uri).to be_relative + end + + it "should have a host of nil" do + expect(@uri.host).to eq(nil) + end + + it "should have a site of nil" do + expect(@uri.site).to eq(nil) + end + + it "should have a normalized_site of nil" do + expect(@uri.normalized_site).to eq(nil) + end + + it "should have a path of ''" do + expect(@uri.path).to eq("") + end + + it "should have a query string of nil" do + expect(@uri.query).to eq(nil) + end + + it "should have a fragment of 'example'" do + expect(@uri.fragment).to eq("example") + end +end + +describe Addressable::URI, "when parsed from " + + "the network-path reference '//example.com/'" do + before do + @uri = Addressable::URI.parse("//example.com/") + end + + it "should be considered relative" do + expect(@uri).to be_relative + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have a path of '/'" do + expect(@uri.path).to eq("/") + end + + it "should raise an error if routing is attempted" do + expect(lambda do + @uri.route_to("http://example.com/") + end).to raise_error(ArgumentError, /\/\/example.com\//) + expect(lambda do + @uri.route_from("http://example.com/") + end).to raise_error(ArgumentError, /\/\/example.com\//) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from " + + "'feed://http://example.com/'" do + before do + @uri = Addressable::URI.parse("feed://http://example.com/") + end + + it "should have a host of 'http'" do + expect(@uri.host).to eq("http") + end + + it "should have a path of '//example.com/'" do + expect(@uri.path).to eq("//example.com/") + end +end + +describe Addressable::URI, "when parsed from " + + "'feed:http://example.com/'" do + before do + @uri = Addressable::URI.parse("feed:http://example.com/") + end + + it "should have a path of 'http://example.com/'" do + expect(@uri.path).to eq("http://example.com/") + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + expect(@uri.normalize!.to_s).to eq("http://example.com/") + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from " + + "'example://a/b/c/%7Bfoo%7D'" do + before do + @uri = Addressable::URI.parse("example://a/b/c/%7Bfoo%7D") + end + + # Section 6.2.2 of RFC 3986 + it "should be equivalent to eXAMPLE://a/./b/../b/%63/%7bfoo%7d" do + expect(@uri).to eq( + Addressable::URI.parse("eXAMPLE://a/./b/../b/%63/%7bfoo%7d") + ) + end + + it "should have an origin of 'example://a'" do + expect(@uri.origin).to eq('example://a') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/indirect/path/./to/../resource/'" do + before do + @uri = Addressable::URI.parse( + "http://example.com/indirect/path/./to/../resource/") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a path of '/indirect/path/./to/../resource/'" do + expect(@uri.path).to eq("/indirect/path/./to/../resource/") + end + + # Section 6.2.2.3 of RFC 3986 + it "should have a normalized path of '/indirect/path/resource/'" do + expect(@uri.normalize.path).to eq("/indirect/path/resource/") + expect(@uri.normalize!.path).to eq("/indirect/path/resource/") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://under_score.example.com/'" do + it "should not cause an error" do + expect(lambda do + Addressable::URI.parse("http://under_score.example.com/") + end).not_to raise_error + end +end + +describe Addressable::URI, "when parsed from " + + "'./this:that'" do + before do + @uri = Addressable::URI.parse("./this:that") + end + + it "should be considered relative" do + expect(@uri).to be_relative + end + + it "should have no scheme" do + expect(@uri.scheme).to eq(nil) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from " + + "'this:that'" do + before do + @uri = Addressable::URI.parse("this:that") + end + + it "should be considered absolute" do + expect(@uri).to be_absolute + end + + it "should have a scheme of 'this'" do + expect(@uri.scheme).to eq("this") + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from '?'" do + before do + @uri = Addressable::URI.parse("?") + end + + it "should normalize to ''" do + expect(@uri.normalize.to_s).to eq("") + end + + it "should have the correct return type" do + expect(@uri.query_values).to eq({}) + expect(@uri.query_values(Hash)).to eq({}) + expect(@uri.query_values(Array)).to eq([]) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from '?one=1&two=2&three=3'" do + before do + @uri = Addressable::URI.parse("?one=1&two=2&three=3") + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({"one" => "1", "two" => "2", "three" => "3"}) + end + + it "should raise an error for invalid return type values" do + expect(lambda do + @uri.query_values(Fixnum) + end).to raise_error(ArgumentError) + end + + it "should have the correct array query values" do + expect(@uri.query_values(Array)).to eq([ + ["one", "1"], ["two", "2"], ["three", "3"] + ]) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from '?one=1=uno&two=2=dos'" do + before do + @uri = Addressable::URI.parse("?one=1=uno&two=2=dos") + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({"one" => "1=uno", "two" => "2=dos"}) + end + + it "should have the correct array query values" do + expect(@uri.query_values(Array)).to eq([ + ["one", "1=uno"], ["two", "2=dos"] + ]) + end +end + +describe Addressable::URI, "when parsed from '?one[two][three]=four'" do + before do + @uri = Addressable::URI.parse("?one[two][three]=four") + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({"one[two][three]" => "four"}) + end + + it "should have the correct array query values" do + expect(@uri.query_values(Array)).to eq([ + ["one[two][three]", "four"] + ]) + end +end + +describe Addressable::URI, "when parsed from '?one.two.three=four'" do + before do + @uri = Addressable::URI.parse("?one.two.three=four") + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({ + "one.two.three" => "four" + }) + end + + it "should have the correct array query values" do + expect(@uri.query_values(Array)).to eq([ + ["one.two.three", "four"] + ]) + end +end + +describe Addressable::URI, "when parsed from " + + "'?one[two][three]=four&one[two][five]=six'" do + before do + @uri = Addressable::URI.parse("?one[two][three]=four&one[two][five]=six") + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({ + "one[two][three]" => "four", "one[two][five]" => "six" + }) + end + + it "should have the correct array query values" do + expect(@uri.query_values(Array)).to eq([ + ["one[two][three]", "four"], ["one[two][five]", "six"] + ]) + end +end + +describe Addressable::URI, "when parsed from " + + "'?one.two.three=four&one.two.five=six'" do + before do + @uri = Addressable::URI.parse("?one.two.three=four&one.two.five=six") + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({ + "one.two.three" => "four", "one.two.five" => "six" + }) + end + + it "should have the correct array query values" do + expect(@uri.query_values(Array)).to eq([ + ["one.two.three", "four"], ["one.two.five", "six"] + ]) + end +end + +describe Addressable::URI, "when parsed from " + + "'?one=two&one=three'" do + before do + @uri = Addressable::URI.parse( + "?one=two&one=three&one=four" + ) + end + + it "should have correct array query values" do + expect(@uri.query_values(Array)).to eq( + [['one', 'two'], ['one', 'three'], ['one', 'four']] + ) + end + + it "should have correct hash query values" do + skip("This is probably more desirable behavior.") + expect(@uri.query_values(Hash)).to eq( + {'one' => ['two', 'three', 'four']} + ) + end + + it "should handle assignment with keys of mixed type" do + @uri.query_values = @uri.query_values(Hash).merge({:one => 'three'}) + expect(@uri.query_values(Hash)).to eq({'one' => 'three'}) + end +end + +describe Addressable::URI, "when parsed from " + + "'?one[two][three][]=four&one[two][three][]=five'" do + before do + @uri = Addressable::URI.parse( + "?one[two][three][]=four&one[two][three][]=five" + ) + end + + it "should have correct query values" do + expect(@uri.query_values(Hash)).to eq({"one[two][three][]" => "five"}) + end + + it "should have correct array query values" do + expect(@uri.query_values(Array)).to eq([ + ["one[two][three][]", "four"], ["one[two][three][]", "five"] + ]) + end +end + +describe Addressable::URI, "when parsed from " + + "'?one[two][three][0]=four&one[two][three][1]=five'" do + before do + @uri = Addressable::URI.parse( + "?one[two][three][0]=four&one[two][three][1]=five" + ) + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({ + "one[two][three][0]" => "four", "one[two][three][1]" => "five" + }) + end +end + +describe Addressable::URI, "when parsed from " + + "'?one[two][three][1]=four&one[two][three][0]=five'" do + before do + @uri = Addressable::URI.parse( + "?one[two][three][1]=four&one[two][three][0]=five" + ) + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({ + "one[two][three][1]" => "four", "one[two][three][0]" => "five" + }) + end +end + +describe Addressable::URI, "when parsed from " + + "'?one[two][three][2]=four&one[two][three][1]=five'" do + before do + @uri = Addressable::URI.parse( + "?one[two][three][2]=four&one[two][three][1]=five" + ) + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({ + "one[two][three][2]" => "four", "one[two][three][1]" => "five" + }) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://www.詹姆斯.com/'" do + before do + @uri = Addressable::URI.parse("http://www.詹姆斯.com/") + end + + it "should be equivalent to 'http://www.xn--8ws00zhy3a.com/'" do + expect(@uri).to eq( + Addressable::URI.parse("http://www.xn--8ws00zhy3a.com/") + ) + end + + it "should not have domain name encoded during normalization" do + expect(Addressable::URI.normalized_encode(@uri.to_s)).to eq( + "http://www.詹姆斯.com/" + ) + end + + it "should have an origin of 'http://www.xn--8ws00zhy3a.com'" do + expect(@uri.origin).to eq('http://www.xn--8ws00zhy3a.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://www.詹姆斯.com/ some spaces /'" do + before do + @uri = Addressable::URI.parse("http://www.詹姆斯.com/ some spaces /") + end + + it "should be equivalent to " + + "'http://www.xn--8ws00zhy3a.com/%20some%20spaces%20/'" do + expect(@uri).to eq( + Addressable::URI.parse( + "http://www.xn--8ws00zhy3a.com/%20some%20spaces%20/") + ) + end + + it "should not have domain name encoded during normalization" do + expect(Addressable::URI.normalized_encode(@uri.to_s)).to eq( + "http://www.詹姆斯.com/%20some%20spaces%20/" + ) + end + + it "should have an origin of 'http://www.xn--8ws00zhy3a.com'" do + expect(@uri.origin).to eq('http://www.xn--8ws00zhy3a.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://www.xn--8ws00zhy3a.com/'" do + before do + @uri = Addressable::URI.parse("http://www.xn--8ws00zhy3a.com/") + end + + it "should be displayed as http://www.詹姆斯.com/" do + expect(@uri.display_uri.to_s).to eq("http://www.詹姆斯.com/") + end + + it "should properly force the encoding" do + display_string = @uri.display_uri.to_str + expect(display_string).to eq("http://www.詹姆斯.com/") + if display_string.respond_to?(:encoding) + expect(display_string.encoding.to_s).to eq(Encoding::UTF_8.to_s) + end + end + + it "should have an origin of 'http://www.xn--8ws00zhy3a.com'" do + expect(@uri.origin).to eq('http://www.xn--8ws00zhy3a.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://www.詹姆斯.com/atomtests/iri/詹.html'" do + before do + @uri = Addressable::URI.parse("http://www.詹姆斯.com/atomtests/iri/詹.html") + end + + it "should normalize to " + + "http://www.xn--8ws00zhy3a.com/atomtests/iri/%E8%A9%B9.html" do + expect(@uri.normalize.to_s).to eq( + "http://www.xn--8ws00zhy3a.com/atomtests/iri/%E8%A9%B9.html" + ) + expect(@uri.normalize!.to_s).to eq( + "http://www.xn--8ws00zhy3a.com/atomtests/iri/%E8%A9%B9.html" + ) + end +end + +describe Addressable::URI, "when parsed from a percent-encoded IRI" do + before do + @uri = Addressable::URI.parse( + "http://www.%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA" + + "%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3" + + "%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82" + + "%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0" + + "%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3" + + "%81%9F%E3%82%8A%E3%81%AA%E3%81%84.w3.mag.keio.ac.jp" + ) + end + + it "should normalize to something sane" do + expect(@uri.normalize.to_s).to eq( + "http://www.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3f" + + "g11amb5gzdb4wi9bya3kc6lra.w3.mag.keio.ac.jp/" + ) + expect(@uri.normalize!.to_s).to eq( + "http://www.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3f" + + "g11amb5gzdb4wi9bya3kc6lra.w3.mag.keio.ac.jp/" + ) + end + + it "should have the correct origin" do + expect(@uri.origin).to eq( + "http://www.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3f" + + "g11amb5gzdb4wi9bya3kc6lra.w3.mag.keio.ac.jp" + ) + end +end + +describe Addressable::URI, "with a base uri of 'http://a/b/c/d;p?q'" do + before do + @uri = Addressable::URI.parse("http://a/b/c/d;p?q") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with 'g:h' should resolve to g:h" do + expect((@uri + "g:h").to_s).to eq("g:h") + expect(Addressable::URI.join(@uri, "g:h").to_s).to eq("g:h") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with 'g' should resolve to http://a/b/c/g" do + expect((@uri + "g").to_s).to eq("http://a/b/c/g") + expect(Addressable::URI.join(@uri.to_s, "g").to_s).to eq("http://a/b/c/g") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with './g' should resolve to http://a/b/c/g" do + expect((@uri + "./g").to_s).to eq("http://a/b/c/g") + expect(Addressable::URI.join(@uri.to_s, "./g").to_s).to eq("http://a/b/c/g") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with 'g/' should resolve to http://a/b/c/g/" do + expect((@uri + "g/").to_s).to eq("http://a/b/c/g/") + expect(Addressable::URI.join(@uri.to_s, "g/").to_s).to eq("http://a/b/c/g/") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '/g' should resolve to http://a/g" do + expect((@uri + "/g").to_s).to eq("http://a/g") + expect(Addressable::URI.join(@uri.to_s, "/g").to_s).to eq("http://a/g") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '//g' should resolve to http://g" do + expect((@uri + "//g").to_s).to eq("http://g") + expect(Addressable::URI.join(@uri.to_s, "//g").to_s).to eq("http://g") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '?y' should resolve to http://a/b/c/d;p?y" do + expect((@uri + "?y").to_s).to eq("http://a/b/c/d;p?y") + expect(Addressable::URI.join(@uri.to_s, "?y").to_s).to eq("http://a/b/c/d;p?y") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with 'g?y' should resolve to http://a/b/c/g?y" do + expect((@uri + "g?y").to_s).to eq("http://a/b/c/g?y") + expect(Addressable::URI.join(@uri.to_s, "g?y").to_s).to eq("http://a/b/c/g?y") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '#s' should resolve to http://a/b/c/d;p?q#s" do + expect((@uri + "#s").to_s).to eq("http://a/b/c/d;p?q#s") + expect(Addressable::URI.join(@uri.to_s, "#s").to_s).to eq( + "http://a/b/c/d;p?q#s" + ) + end + + # Section 5.4.1 of RFC 3986 + it "when joined with 'g#s' should resolve to http://a/b/c/g#s" do + expect((@uri + "g#s").to_s).to eq("http://a/b/c/g#s") + expect(Addressable::URI.join(@uri.to_s, "g#s").to_s).to eq("http://a/b/c/g#s") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with 'g?y#s' should resolve to http://a/b/c/g?y#s" do + expect((@uri + "g?y#s").to_s).to eq("http://a/b/c/g?y#s") + expect(Addressable::URI.join( + @uri.to_s, "g?y#s").to_s).to eq("http://a/b/c/g?y#s") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with ';x' should resolve to http://a/b/c/;x" do + expect((@uri + ";x").to_s).to eq("http://a/b/c/;x") + expect(Addressable::URI.join(@uri.to_s, ";x").to_s).to eq("http://a/b/c/;x") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with 'g;x' should resolve to http://a/b/c/g;x" do + expect((@uri + "g;x").to_s).to eq("http://a/b/c/g;x") + expect(Addressable::URI.join(@uri.to_s, "g;x").to_s).to eq("http://a/b/c/g;x") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with 'g;x?y#s' should resolve to http://a/b/c/g;x?y#s" do + expect((@uri + "g;x?y#s").to_s).to eq("http://a/b/c/g;x?y#s") + expect(Addressable::URI.join( + @uri.to_s, "g;x?y#s").to_s).to eq("http://a/b/c/g;x?y#s") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '' should resolve to http://a/b/c/d;p?q" do + expect((@uri + "").to_s).to eq("http://a/b/c/d;p?q") + expect(Addressable::URI.join(@uri.to_s, "").to_s).to eq("http://a/b/c/d;p?q") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '.' should resolve to http://a/b/c/" do + expect((@uri + ".").to_s).to eq("http://a/b/c/") + expect(Addressable::URI.join(@uri.to_s, ".").to_s).to eq("http://a/b/c/") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with './' should resolve to http://a/b/c/" do + expect((@uri + "./").to_s).to eq("http://a/b/c/") + expect(Addressable::URI.join(@uri.to_s, "./").to_s).to eq("http://a/b/c/") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '..' should resolve to http://a/b/" do + expect((@uri + "..").to_s).to eq("http://a/b/") + expect(Addressable::URI.join(@uri.to_s, "..").to_s).to eq("http://a/b/") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '../' should resolve to http://a/b/" do + expect((@uri + "../").to_s).to eq("http://a/b/") + expect(Addressable::URI.join(@uri.to_s, "../").to_s).to eq("http://a/b/") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '../g' should resolve to http://a/b/g" do + expect((@uri + "../g").to_s).to eq("http://a/b/g") + expect(Addressable::URI.join(@uri.to_s, "../g").to_s).to eq("http://a/b/g") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '../..' should resolve to http://a/" do + expect((@uri + "../..").to_s).to eq("http://a/") + expect(Addressable::URI.join(@uri.to_s, "../..").to_s).to eq("http://a/") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '../../' should resolve to http://a/" do + expect((@uri + "../../").to_s).to eq("http://a/") + expect(Addressable::URI.join(@uri.to_s, "../../").to_s).to eq("http://a/") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '../../g' should resolve to http://a/g" do + expect((@uri + "../../g").to_s).to eq("http://a/g") + expect(Addressable::URI.join(@uri.to_s, "../../g").to_s).to eq("http://a/g") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with '../../../g' should resolve to http://a/g" do + expect((@uri + "../../../g").to_s).to eq("http://a/g") + expect(Addressable::URI.join(@uri.to_s, "../../../g").to_s).to eq("http://a/g") + end + + it "when joined with '../.././../g' should resolve to http://a/g" do + expect((@uri + "../.././../g").to_s).to eq("http://a/g") + expect(Addressable::URI.join(@uri.to_s, "../.././../g").to_s).to eq( + "http://a/g" + ) + end + + # Section 5.4.2 of RFC 3986 + it "when joined with '../../../../g' should resolve to http://a/g" do + expect((@uri + "../../../../g").to_s).to eq("http://a/g") + expect(Addressable::URI.join( + @uri.to_s, "../../../../g").to_s).to eq("http://a/g") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with '/./g' should resolve to http://a/g" do + expect((@uri + "/./g").to_s).to eq("http://a/g") + expect(Addressable::URI.join(@uri.to_s, "/./g").to_s).to eq("http://a/g") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with '/../g' should resolve to http://a/g" do + expect((@uri + "/../g").to_s).to eq("http://a/g") + expect(Addressable::URI.join(@uri.to_s, "/../g").to_s).to eq("http://a/g") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g.' should resolve to http://a/b/c/g." do + expect((@uri + "g.").to_s).to eq("http://a/b/c/g.") + expect(Addressable::URI.join(@uri.to_s, "g.").to_s).to eq("http://a/b/c/g.") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with '.g' should resolve to http://a/b/c/.g" do + expect((@uri + ".g").to_s).to eq("http://a/b/c/.g") + expect(Addressable::URI.join(@uri.to_s, ".g").to_s).to eq("http://a/b/c/.g") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g..' should resolve to http://a/b/c/g.." do + expect((@uri + "g..").to_s).to eq("http://a/b/c/g..") + expect(Addressable::URI.join(@uri.to_s, "g..").to_s).to eq("http://a/b/c/g..") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with '..g' should resolve to http://a/b/c/..g" do + expect((@uri + "..g").to_s).to eq("http://a/b/c/..g") + expect(Addressable::URI.join(@uri.to_s, "..g").to_s).to eq("http://a/b/c/..g") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with './../g' should resolve to http://a/b/g" do + expect((@uri + "./../g").to_s).to eq("http://a/b/g") + expect(Addressable::URI.join(@uri.to_s, "./../g").to_s).to eq("http://a/b/g") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with './g/.' should resolve to http://a/b/c/g/" do + expect((@uri + "./g/.").to_s).to eq("http://a/b/c/g/") + expect(Addressable::URI.join(@uri.to_s, "./g/.").to_s).to eq("http://a/b/c/g/") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g/./h' should resolve to http://a/b/c/g/h" do + expect((@uri + "g/./h").to_s).to eq("http://a/b/c/g/h") + expect(Addressable::URI.join(@uri.to_s, "g/./h").to_s).to eq("http://a/b/c/g/h") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g/../h' should resolve to http://a/b/c/h" do + expect((@uri + "g/../h").to_s).to eq("http://a/b/c/h") + expect(Addressable::URI.join(@uri.to_s, "g/../h").to_s).to eq("http://a/b/c/h") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g;x=1/./y' " + + "should resolve to http://a/b/c/g;x=1/y" do + expect((@uri + "g;x=1/./y").to_s).to eq("http://a/b/c/g;x=1/y") + expect(Addressable::URI.join( + @uri.to_s, "g;x=1/./y").to_s).to eq("http://a/b/c/g;x=1/y") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g;x=1/../y' should resolve to http://a/b/c/y" do + expect((@uri + "g;x=1/../y").to_s).to eq("http://a/b/c/y") + expect(Addressable::URI.join( + @uri.to_s, "g;x=1/../y").to_s).to eq("http://a/b/c/y") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g?y/./x' " + + "should resolve to http://a/b/c/g?y/./x" do + expect((@uri + "g?y/./x").to_s).to eq("http://a/b/c/g?y/./x") + expect(Addressable::URI.join( + @uri.to_s, "g?y/./x").to_s).to eq("http://a/b/c/g?y/./x") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g?y/../x' " + + "should resolve to http://a/b/c/g?y/../x" do + expect((@uri + "g?y/../x").to_s).to eq("http://a/b/c/g?y/../x") + expect(Addressable::URI.join( + @uri.to_s, "g?y/../x").to_s).to eq("http://a/b/c/g?y/../x") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g#s/./x' " + + "should resolve to http://a/b/c/g#s/./x" do + expect((@uri + "g#s/./x").to_s).to eq("http://a/b/c/g#s/./x") + expect(Addressable::URI.join( + @uri.to_s, "g#s/./x").to_s).to eq("http://a/b/c/g#s/./x") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g#s/../x' " + + "should resolve to http://a/b/c/g#s/../x" do + expect((@uri + "g#s/../x").to_s).to eq("http://a/b/c/g#s/../x") + expect(Addressable::URI.join( + @uri.to_s, "g#s/../x").to_s).to eq("http://a/b/c/g#s/../x") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'http:g' should resolve to http:g" do + expect((@uri + "http:g").to_s).to eq("http:g") + expect(Addressable::URI.join(@uri.to_s, "http:g").to_s).to eq("http:g") + end + + # Edge case to be sure + it "when joined with '//example.com/' should " + + "resolve to http://example.com/" do + expect((@uri + "//example.com/").to_s).to eq("http://example.com/") + expect(Addressable::URI.join( + @uri.to_s, "//example.com/").to_s).to eq("http://example.com/") + end + + it "when joined with a bogus object a TypeError should be raised" do + expect(lambda do + Addressable::URI.join(@uri, 42) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when converting the path " + + "'relative/path/to/something'" do + before do + @path = 'relative/path/to/something' + end + + it "should convert to " + + "\'relative/path/to/something\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("relative/path/to/something") + end + + it "should join with an absolute file path correctly" do + @base = Addressable::URI.convert_path("/absolute/path/") + @uri = Addressable::URI.convert_path(@path) + expect((@base + @uri).to_str).to eq( + "file:///absolute/path/relative/path/to/something" + ) + end +end + +describe Addressable::URI, "when converting a bogus path" do + it "should raise a TypeError" do + expect(lambda do + Addressable::URI.convert_path(42) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when given a UNIX root directory" do + before do + @path = "/" + end + + it "should convert to \'file:///\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("file:///") + end + + it "should have an origin of 'file://'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.origin).to eq('file://') + end +end + +describe Addressable::URI, "when given a Windows root directory" do + before do + @path = "C:\\" + end + + it "should convert to \'file:///c:/\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("file:///c:/") + end + + it "should have an origin of 'file://'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.origin).to eq('file://') + end +end + +describe Addressable::URI, "when given the path '/one/two/'" do + before do + @path = '/one/two/' + end + + it "should convert to " + + "\'file:///one/two/\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("file:///one/two/") + end + + it "should have an origin of 'file://'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.origin).to eq('file://') + end +end + +describe Addressable::URI, "when given the path " + + "'c:\\windows\\My Documents 100%20\\foo.txt'" do + before do + @path = "c:\\windows\\My Documents 100%20\\foo.txt" + end + + it "should convert to " + + "\'file:///c:/windows/My%20Documents%20100%20/foo.txt\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("file:///c:/windows/My%20Documents%20100%20/foo.txt") + end + + it "should have an origin of 'file://'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.origin).to eq('file://') + end +end + +describe Addressable::URI, "when given the path " + + "'file://c:\\windows\\My Documents 100%20\\foo.txt'" do + before do + @path = "file://c:\\windows\\My Documents 100%20\\foo.txt" + end + + it "should convert to " + + "\'file:///c:/windows/My%20Documents%20100%20/foo.txt\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("file:///c:/windows/My%20Documents%20100%20/foo.txt") + end + + it "should have an origin of 'file://'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.origin).to eq('file://') + end +end + +describe Addressable::URI, "when given the path " + + "'file:c:\\windows\\My Documents 100%20\\foo.txt'" do + before do + @path = "file:c:\\windows\\My Documents 100%20\\foo.txt" + end + + it "should convert to " + + "\'file:///c:/windows/My%20Documents%20100%20/foo.txt\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("file:///c:/windows/My%20Documents%20100%20/foo.txt") + end + + it "should have an origin of 'file://'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.origin).to eq('file://') + end +end + +describe Addressable::URI, "when given the path " + + "'file:/c:\\windows\\My Documents 100%20\\foo.txt'" do + before do + @path = "file:/c:\\windows\\My Documents 100%20\\foo.txt" + end + + it "should convert to " + + "\'file:///c:/windows/My%20Documents%20100%20/foo.txt\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("file:///c:/windows/My%20Documents%20100%20/foo.txt") + end + + it "should have an origin of 'file://'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.origin).to eq('file://') + end +end + +describe Addressable::URI, "when given the path " + + "'file:///c|/windows/My%20Documents%20100%20/foo.txt'" do + before do + @path = "file:///c|/windows/My%20Documents%20100%20/foo.txt" + end + + it "should convert to " + + "\'file:///c:/windows/My%20Documents%20100%20/foo.txt\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("file:///c:/windows/My%20Documents%20100%20/foo.txt") + end + + it "should have an origin of 'file://'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.origin).to eq('file://') + end +end + +describe Addressable::URI, "when given an http protocol URI" do + before do + @path = "http://example.com/" + end + + it "should not do any conversion at all" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("http://example.com/") + end +end + +class SuperString + def initialize(string) + @string = string.to_s + end + + def to_str + return @string + end +end + +describe Addressable::URI, "when parsing a non-String object" do + it "should correctly parse anything with a 'to_str' method" do + Addressable::URI.parse(SuperString.new(42)) + end + + it "should raise a TypeError for objects than cannot be converted" do + expect(lambda do + Addressable::URI.parse(42) + end).to raise_error(TypeError) + end + + it "should correctly parse heuristically anything with a 'to_str' method" do + Addressable::URI.heuristic_parse(SuperString.new(42)) + end + + it "should raise a TypeError for objects than cannot be converted" do + expect(lambda do + Addressable::URI.heuristic_parse(42) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when form encoding a hash" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.form_encode( + [["&one", "/1"], ["=two", "?2"], [":three", "#3"]] + )).to eq("%26one=%2F1&%3Dtwo=%3F2&%3Athree=%233") + end + + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.form_encode( + {"q" => "one two three"} + )).to eq("q=one+two+three") + end + + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.form_encode( + {"key" => nil} + )).to eq("key=") + end + + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.form_encode( + {"q" => ["one", "two", "three"]} + )).to eq("q=one&q=two&q=three") + end + + it "should result in correctly encoded newlines" do + expect(Addressable::URI.form_encode( + {"text" => "one\ntwo\rthree\r\nfour\n\r"} + )).to eq("text=one%0D%0Atwo%0D%0Athree%0D%0Afour%0D%0A%0D%0A") + end + + it "should result in a sorted percent encoded sequence" do + expect(Addressable::URI.form_encode( + [["a", "1"], ["dup", "3"], ["dup", "2"]], true + )).to eq("a=1&dup=2&dup=3") + end +end + +describe Addressable::URI, "when form encoding a non-Array object" do + it "should raise a TypeError for objects than cannot be converted" do + expect(lambda do + Addressable::URI.form_encode(42) + end).to raise_error(TypeError) + end +end + +# See https://tools.ietf.org/html/rfc6749#appendix-B +describe Addressable::URI, "when form encoding the example value from OAuth 2" do + it "should result in correct values" do + expect(Addressable::URI.form_encode( + {"value" => " %&+£€"} + )).to eq("value=+%25%26%2B%C2%A3%E2%82%AC") + end +end + +# See https://tools.ietf.org/html/rfc6749#appendix-B +describe Addressable::URI, "when form unencoding the example value from OAuth 2" do + it "should result in correct values" do + expect(Addressable::URI.form_unencode( + "value=+%25%26%2B%C2%A3%E2%82%AC" + )).to eq([["value", " %&+£€"]]) + end +end + +describe Addressable::URI, "when form unencoding a string" do + it "should result in correct values" do + expect(Addressable::URI.form_unencode( + "%26one=%2F1&%3Dtwo=%3F2&%3Athree=%233" + )).to eq([["&one", "/1"], ["=two", "?2"], [":three", "#3"]]) + end + + it "should result in correct values" do + expect(Addressable::URI.form_unencode( + "q=one+two+three" + )).to eq([["q", "one two three"]]) + end + + it "should result in correct values" do + expect(Addressable::URI.form_unencode( + "text=one%0D%0Atwo%0D%0Athree%0D%0Afour%0D%0A%0D%0A" + )).to eq([["text", "one\ntwo\nthree\nfour\n\n"]]) + end + + it "should result in correct values" do + expect(Addressable::URI.form_unencode( + "a=1&dup=2&dup=3" + )).to eq([["a", "1"], ["dup", "2"], ["dup", "3"]]) + end + + it "should result in correct values" do + expect(Addressable::URI.form_unencode( + "key" + )).to eq([["key", nil]]) + end + + it "should result in correct values" do + expect(Addressable::URI.form_unencode("GivenName=Ren%C3%A9")).to eq( + [["GivenName", "René"]] + ) + end +end + +describe Addressable::URI, "when form unencoding a non-String object" do + it "should correctly parse anything with a 'to_str' method" do + Addressable::URI.form_unencode(SuperString.new(42)) + end + + it "should raise a TypeError for objects than cannot be converted" do + expect(lambda do + Addressable::URI.form_unencode(42) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when normalizing a non-String object" do + it "should correctly parse anything with a 'to_str' method" do + Addressable::URI.normalize_component(SuperString.new(42)) + end + + it "should raise a TypeError for objects than cannot be converted" do + expect(lambda do + Addressable::URI.normalize_component(42) + end).to raise_error(TypeError) + end + + it "should raise a TypeError for objects than cannot be converted" do + expect(lambda do + Addressable::URI.normalize_component("component", 42) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when normalizing a path with an encoded slash" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.parse("/path%2Fsegment/").normalize.path).to eq( + "/path%2Fsegment/" + ) + end +end + +describe Addressable::URI, "when normalizing a partially encoded string" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.normalize_component( + "partially % encoded%21" + )).to eq("partially%20%25%20encoded!") + end + + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.normalize_component( + "partially %25 encoded!" + )).to eq("partially%20%25%20encoded!") + end +end + +describe Addressable::URI, "when normalizing a unicode sequence" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.normalize_component( + "/C%CC%A7" + )).to eq("/%C3%87") + end + + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.normalize_component( + "/%C3%87" + )).to eq("/%C3%87") + end +end + +describe Addressable::URI, "when normalizing a multibyte string" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.normalize_component("günther")).to eq( + "g%C3%BCnther" + ) + end + + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.normalize_component("g%C3%BCnther")).to eq( + "g%C3%BCnther" + ) + end +end + +describe Addressable::URI, "when normalizing a string but leaving some characters encoded" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.normalize_component("%58X%59Y%5AZ", "0-9a-zXY", "Y")).to eq( + "XX%59Y%5A%5A" + ) + end + + it "should not modify the character class" do + character_class = "0-9a-zXY" + + character_class_copy = character_class.dup + + Addressable::URI.normalize_component("%58X%59Y%5AZ", character_class, "Y") + + expect(character_class).to eq(character_class_copy) + end +end + +describe Addressable::URI, "when encoding a string with existing encodings to upcase" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.encode_component("JK%4c", "0-9A-IKM-Za-z%", "L")).to eq("%4AK%4C") + end +end + +describe Addressable::URI, "when encoding a multibyte string" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.encode_component("günther")).to eq("g%C3%BCnther") + end + + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.encode_component( + "günther", /[^a-zA-Z0-9\:\/\?\#\[\]\@\!\$\&\'\(\)\*\+\,\;\=\-\.\_\~]/ + )).to eq("g%C3%BCnther") + end +end + +describe Addressable::URI, "when form encoding a multibyte string" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.form_encode({"GivenName" => "René"})).to eq( + "GivenName=Ren%C3%A9" + ) + end +end + +describe Addressable::URI, "when encoding a string with ASCII chars 0-15" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.encode_component("one\ntwo")).to eq("one%0Atwo") + end + + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.encode_component( + "one\ntwo", /[^a-zA-Z0-9\:\/\?\#\[\]\@\!\$\&\'\(\)\*\+\,\;\=\-\.\_\~]/ + )).to eq("one%0Atwo") + end +end + +describe Addressable::URI, "when unencoding a multibyte string" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.unencode_component("g%C3%BCnther")).to eq("günther") + end + + it "should consistently use UTF-8 internally" do + expect(Addressable::URI.unencode_component("ski=%BA%DAɫ")).to eq("ski=\xBA\xDAɫ") + end + + it "should result in correct percent encoded sequence as a URI" do + expect(Addressable::URI.unencode( + "/path?g%C3%BCnther", ::Addressable::URI + )).to eq(Addressable::URI.new( + :path => "/path", :query => "günther" + )) + end +end + +describe Addressable::URI, "when partially unencoding a string" do + it "should unencode all characters by default" do + expect(Addressable::URI.unencode('%%25~%7e+%2b', String)).to eq('%%~~++') + end + + it "should unencode characters not in leave_encoded" do + expect(Addressable::URI.unencode('%%25~%7e+%2b', String, '~')).to eq('%%~%7e++') + end + + it "should leave characters in leave_encoded alone" do + expect(Addressable::URI.unencode('%%25~%7e+%2b', String, '%~+')).to eq('%%25~%7e+%2b') + end +end + +describe Addressable::URI, "when unencoding a bogus object" do + it "should raise a TypeError" do + expect(lambda do + Addressable::URI.unencode_component(42) + end).to raise_error(TypeError) + end + + it "should raise a TypeError" do + expect(lambda do + Addressable::URI.unencode("/path?g%C3%BCnther", Integer) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when encoding a bogus object" do + it "should raise a TypeError" do + expect(lambda do + Addressable::URI.encode(Object.new) + end).to raise_error(TypeError) + end + + it "should raise a TypeError" do + expect(lambda do + Addressable::URI.normalized_encode(Object.new) + end).to raise_error(TypeError) + end + + it "should raise a TypeError" do + expect(lambda do + Addressable::URI.encode_component("günther", Object.new) + end).to raise_error(TypeError) + end + + it "should raise a TypeError" do + expect(lambda do + Addressable::URI.encode_component(Object.new) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when given the input " + + "'http://example.com/'" do + before do + @input = "http://example.com/" + end + + it "should heuristically parse to 'http://example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("http://example.com/") + end + + it "should not raise error when frozen" do + expect(lambda do + Addressable::URI.heuristic_parse(@input).freeze.to_s + end).not_to raise_error + end +end + +describe Addressable::URI, "when given the input " + + "'https://example.com/'" do + before do + @input = "https://example.com/" + end + + it "should heuristically parse to 'https://example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("https://example.com/") + end +end + +describe Addressable::URI, "when given the input " + + "'http:example.com/'" do + before do + @input = "http:example.com/" + end + + it "should heuristically parse to 'http://example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("http://example.com/") + end + + it "should heuristically parse to 'http://example.com/' " + + "even with a scheme hint of 'ftp'" do + @uri = Addressable::URI.heuristic_parse(@input, {:scheme => 'ftp'}) + expect(@uri.to_s).to eq("http://example.com/") + end +end + +describe Addressable::URI, "when given the input " + + "'https:example.com/'" do + before do + @input = "https:example.com/" + end + + it "should heuristically parse to 'https://example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("https://example.com/") + end + + it "should heuristically parse to 'https://example.com/' " + + "even with a scheme hint of 'ftp'" do + @uri = Addressable::URI.heuristic_parse(@input, {:scheme => 'ftp'}) + expect(@uri.to_s).to eq("https://example.com/") + end +end + +describe Addressable::URI, "when given the input " + + "'http://example.com/example.com/'" do + before do + @input = "http://example.com/example.com/" + end + + it "should heuristically parse to 'http://example.com/example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("http://example.com/example.com/") + end +end + +describe Addressable::URI, "when given the input " + + "'http://prefix\\.example.com/'" do + before do + @input = "http://prefix\\.example.com/" + end + + it "should heuristically parse to 'http://prefix/.example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.authority).to eq("prefix") + expect(@uri.to_s).to eq("http://prefix/.example.com/") + end + + it "should heuristically parse to 'http://prefix/.example.com/' " + + "even with a scheme hint of 'ftp'" do + @uri = Addressable::URI.heuristic_parse(@input, {:scheme => 'ftp'}) + expect(@uri.to_s).to eq("http://prefix/.example.com/") + end +end + +describe Addressable::URI, "when given the input " + + "'http://p:\\/'" do + before do + @input = "http://p:\\/" + end + + it "should heuristically parse to 'http://p//'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.authority).to eq("p") + expect(@uri.to_s).to eq("http://p//") + end + + it "should heuristically parse to 'http://p//' " + + "even with a scheme hint of 'ftp'" do + @uri = Addressable::URI.heuristic_parse(@input, {:scheme => 'ftp'}) + expect(@uri.to_s).to eq("http://p//") + end +end + +describe Addressable::URI, "when given the input " + + "'http://p://'" do + before do + @input = "http://p://" + end + + it "should heuristically parse to 'http://p//'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.authority).to eq("p") + expect(@uri.to_s).to eq("http://p//") + end + + it "should heuristically parse to 'http://p//' " + + "even with a scheme hint of 'ftp'" do + @uri = Addressable::URI.heuristic_parse(@input, {:scheme => 'ftp'}) + expect(@uri.to_s).to eq("http://p//") + end +end + +describe Addressable::URI, "when given the input " + + "'http://p://p'" do + before do + @input = "http://p://p" + end + + it "should heuristically parse to 'http://p//p'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.authority).to eq("p") + expect(@uri.to_s).to eq("http://p//p") + end + + it "should heuristically parse to 'http://p//p' " + + "even with a scheme hint of 'ftp'" do + @uri = Addressable::URI.heuristic_parse(@input, {:scheme => 'ftp'}) + expect(@uri.to_s).to eq("http://p//p") + end +end + +describe Addressable::URI, "when given the input " + + "'http://prefix .example.com/'" do + before do + @input = "http://prefix .example.com/" + end + + # Justification here being that no browser actually tries to resolve this. + # They all treat this as a web search. + it "should heuristically parse to 'http://prefix%20.example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.authority).to eq("prefix%20.example.com") + expect(@uri.to_s).to eq("http://prefix%20.example.com/") + end + + it "should heuristically parse to 'http://prefix%20.example.com/' " + + "even with a scheme hint of 'ftp'" do + @uri = Addressable::URI.heuristic_parse(@input, {:scheme => 'ftp'}) + expect(@uri.to_s).to eq("http://prefix%20.example.com/") + end +end + +describe Addressable::URI, "when given the input " + + "' http://www.example.com/ '" do + before do + @input = " http://www.example.com/ " + end + + it "should heuristically parse to 'http://prefix%20.example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.scheme).to eq("http") + expect(@uri.path).to eq("/") + expect(@uri.to_s).to eq("http://www.example.com/") + end +end + +describe Addressable::URI, "when given the input " + + "'http://prefix%2F.example.com/'" do + before do + @input = "http://prefix%2F.example.com/" + end + + it "should heuristically parse to 'http://prefix%2F.example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.authority).to eq("prefix%2F.example.com") + expect(@uri.to_s).to eq("http://prefix%2F.example.com/") + end + + it "should heuristically parse to 'http://prefix%2F.example.com/' " + + "even with a scheme hint of 'ftp'" do + @uri = Addressable::URI.heuristic_parse(@input, {:scheme => 'ftp'}) + expect(@uri.to_s).to eq("http://prefix%2F.example.com/") + end +end + +describe Addressable::URI, "when given the input " + + "'/path/to/resource'" do + before do + @input = "/path/to/resource" + end + + it "should heuristically parse to '/path/to/resource'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("/path/to/resource") + end +end + +describe Addressable::URI, "when given the input " + + "'relative/path/to/resource'" do + before do + @input = "relative/path/to/resource" + end + + it "should heuristically parse to 'relative/path/to/resource'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("relative/path/to/resource") + end +end + +describe Addressable::URI, "when given the input " + + "'example.com'" do + before do + @input = "example.com" + end + + it "should heuristically parse to 'http://example.com'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("http://example.com") + end +end + +describe Addressable::URI, "when given the input " + + "'example.com' and a scheme hint of 'ftp'" do + before do + @input = "example.com" + @hints = {:scheme => 'ftp'} + end + + it "should heuristically parse to 'http://example.com'" do + @uri = Addressable::URI.heuristic_parse(@input, @hints) + expect(@uri.to_s).to eq("ftp://example.com") + end +end + +describe Addressable::URI, "when given the input " + + "'example.com:21' and a scheme hint of 'ftp'" do + before do + @input = "example.com:21" + @hints = {:scheme => 'ftp'} + end + + it "should heuristically parse to 'http://example.com:21'" do + @uri = Addressable::URI.heuristic_parse(@input, @hints) + expect(@uri.to_s).to eq("ftp://example.com:21") + end +end + +describe Addressable::URI, "when given the input " + + "'example.com/path/to/resource'" do + before do + @input = "example.com/path/to/resource" + end + + it "should heuristically parse to 'http://example.com/path/to/resource'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("http://example.com/path/to/resource") + end +end + +describe Addressable::URI, "when given the input " + + "'http:///example.com'" do + before do + @input = "http:///example.com" + end + + it "should heuristically parse to 'http://example.com'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("http://example.com") + end +end + +describe Addressable::URI, "when given the input " + + "'feed:///example.com'" do + before do + @input = "feed:///example.com" + end + + it "should heuristically parse to 'feed://example.com'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("feed://example.com") + end +end + +describe Addressable::URI, "when given the input " + + "'file://path/to/resource/'" do + before do + @input = "file://path/to/resource/" + end + + it "should heuristically parse to 'file:///path/to/resource/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("file:///path/to/resource/") + end +end + +describe Addressable::URI, "when given the input " + + "'feed://http://example.com'" do + before do + @input = "feed://http://example.com" + end + + it "should heuristically parse to 'feed:http://example.com'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("feed:http://example.com") + end +end + +describe Addressable::URI, "when given the input " + + "::URI.parse('http://example.com')" do + before do + @input = ::URI.parse('http://example.com') + end + + it "should heuristically parse to 'http://example.com'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("http://example.com") + end +end + +describe Addressable::URI, "when assigning query values" do + before do + @uri = Addressable::URI.new + end + + it "should correctly assign {:a => 'a', :b => ['c', 'd', 'e']}" do + @uri.query_values = {:a => "a", :b => ["c", "d", "e"]} + expect(@uri.query).to eq("a=a&b=c&b=d&b=e") + end + + it "should raise an error attempting to assign {'a' => {'b' => ['c']}}" do + expect(lambda do + @uri.query_values = { 'a' => {'b' => ['c'] } } + end).to raise_error(TypeError) + end + + it "should raise an error attempting to assign " + + "{:b => '2', :a => {:c => '1'}}" do + expect(lambda do + @uri.query_values = {:b => '2', :a => {:c => '1'}} + end).to raise_error(TypeError) + end + + it "should raise an error attempting to assign " + + "{:a => 'a', :b => [{:c => 'c', :d => 'd'}, " + + "{:e => 'e', :f => 'f'}]}" do + expect(lambda do + @uri.query_values = { + :a => "a", :b => [{:c => "c", :d => "d"}, {:e => "e", :f => "f"}] + } + end).to raise_error(TypeError) + end + + it "should raise an error attempting to assign " + + "{:a => 'a', :b => [{:c => true, :d => 'd'}, " + + "{:e => 'e', :f => 'f'}]}" do + expect(lambda do + @uri.query_values = { + :a => 'a', :b => [{:c => true, :d => 'd'}, {:e => 'e', :f => 'f'}] + } + end).to raise_error(TypeError) + end + + it "should raise an error attempting to assign " + + "{:a => 'a', :b => {:c => true, :d => 'd'}}" do + expect(lambda do + @uri.query_values = { + :a => 'a', :b => {:c => true, :d => 'd'} + } + end).to raise_error(TypeError) + end + + it "should raise an error attempting to assign " + + "{:a => 'a', :b => {:c => true, :d => 'd'}}" do + expect(lambda do + @uri.query_values = { + :a => 'a', :b => {:c => true, :d => 'd'} + } + end).to raise_error(TypeError) + end + + it "should correctly assign {:a => 1, :b => 1.5}" do + @uri.query_values = { :a => 1, :b => 1.5 } + expect(@uri.query).to eq("a=1&b=1.5") + end + + it "should raise an error attempting to assign " + + "{:z => 1, :f => [2, {999.1 => [3,'4']}, ['h', 'i']], " + + ":a => {:b => ['c', 'd'], :e => true, :y => 0.5}}" do + expect(lambda do + @uri.query_values = { + :z => 1, + :f => [ 2, {999.1 => [3,'4']}, ['h', 'i'] ], + :a => { :b => ['c', 'd'], :e => true, :y => 0.5 } + } + end).to raise_error(TypeError) + end + + it "should correctly assign {}" do + @uri.query_values = {} + expect(@uri.query).to eq('') + end + + it "should correctly assign nil" do + @uri.query_values = nil + expect(@uri.query).to eq(nil) + end + + it "should correctly sort {'ab' => 'c', :ab => 'a', :a => 'x'}" do + @uri.query_values = {'ab' => 'c', :ab => 'a', :a => 'x'} + expect(@uri.query).to eq("a=x&ab=a&ab=c") + end + + it "should correctly assign " + + "[['b', 'c'], ['b', 'a'], ['a', 'a']]" do + # Order can be guaranteed in this format, so preserve it. + @uri.query_values = [['b', 'c'], ['b', 'a'], ['a', 'a']] + expect(@uri.query).to eq("b=c&b=a&a=a") + end + + it "should preserve query string order" do + query_string = (('a'..'z').to_a.reverse.map { |e| "#{e}=#{e}" }).join("&") + @uri.query = query_string + original_uri = @uri.to_s + @uri.query_values = @uri.query_values(Array) + expect(@uri.to_s).to eq(original_uri) + end + + describe 'when a hash with mixed types is assigned to query_values' do + it 'should not raise an error' do + skip 'Issue #94' + expect { subject.query_values = { "page" => "1", :page => 2 } }.to_not raise_error + end + end +end + +describe Addressable::URI, "when assigning path values" do + before do + @uri = Addressable::URI.new + end + + it "should correctly assign paths containing colons" do + @uri.path = "acct:bob@sporkmonger.com" + expect(@uri.path).to eq("acct:bob@sporkmonger.com") + expect(@uri.normalize.to_str).to eq("acct%2Fbob@sporkmonger.com") + expect(lambda { @uri.to_s }).to raise_error( + Addressable::URI::InvalidURIError + ) + end + + it "should correctly assign paths containing colons" do + @uri.path = "/acct:bob@sporkmonger.com" + @uri.authority = "example.com" + expect(@uri.normalize.to_str).to eq("//example.com/acct:bob@sporkmonger.com") + end + + it "should correctly assign paths containing colons" do + @uri.path = "acct:bob@sporkmonger.com" + @uri.scheme = "something" + expect(@uri.normalize.to_str).to eq("something:acct:bob@sporkmonger.com") + end + + it "should not allow relative paths to be assigned on absolute URIs" do + expect(lambda do + @uri.scheme = "http" + @uri.host = "example.com" + @uri.path = "acct:bob@sporkmonger.com" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should not allow relative paths to be assigned on absolute URIs" do + expect(lambda do + @uri.path = "acct:bob@sporkmonger.com" + @uri.scheme = "http" + @uri.host = "example.com" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should not allow relative paths to be assigned on absolute URIs" do + expect(lambda do + @uri.path = "uuid:0b3ecf60-3f93-11df-a9c3-001f5bfffe12" + @uri.scheme = "urn" + end).not_to raise_error + end +end + +describe Addressable::URI, "when initializing a subclass of Addressable::URI" do + before do + @uri = Class.new(Addressable::URI).new + end + + it "should have the same class after being parsed" do + expect(@uri.class).to eq(Addressable::URI.parse(@uri).class) + end + + it "should have the same class as its duplicate" do + expect(@uri.class).to eq(@uri.dup.class) + end + + it "should have the same class after being normalized" do + expect(@uri.class).to eq(@uri.normalize.class) + end + + it "should have the same class after being merged" do + expect(@uri.class).to eq(@uri.merge(:path => 'path').class) + end + + it "should have the same class after being joined" do + expect(@uri.class).to eq(@uri.join('path').class) + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/spec_helper.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/spec_helper.rb new file mode 100644 index 0000000..0b53829 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/spec/spec_helper.rb @@ -0,0 +1,21 @@ +require 'bundler/setup' +require 'rspec/its' + +begin + require 'coveralls' + Coveralls.wear! do + add_filter "spec/" + add_filter "vendor/" + end +rescue LoadError + warn "warning: coveralls gem not found; skipping Coveralls" + require 'simplecov' + SimpleCov.start do + add_filter "spec/" + add_filter "vendor/" + end +end + +RSpec.configure do |config| + config.warnings = true +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/clobber.rake b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/clobber.rake new file mode 100644 index 0000000..093ce81 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/clobber.rake @@ -0,0 +1,2 @@ +desc "Remove all build products" +task "clobber" diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/gem.rake b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/gem.rake new file mode 100644 index 0000000..61d508c --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/gem.rake @@ -0,0 +1,91 @@ +require "rubygems/package_task" + +namespace :gem do + GEM_SPEC = Gem::Specification.new do |s| + s.name = PKG_NAME + s.version = PKG_VERSION + s.summary = PKG_SUMMARY + s.description = PKG_DESCRIPTION + + s.files = PKG_FILES.to_a + + s.has_rdoc = true + s.extra_rdoc_files = %w( README.md ) + s.rdoc_options.concat ["--main", "README.md"] + + if !s.respond_to?(:add_development_dependency) + puts "Cannot build Gem with this version of RubyGems." + exit(1) + end + + s.required_ruby_version = '>= 2.0' + + s.add_runtime_dependency 'public_suffix', '~> 2.0', '>= 2.0.2' + s.add_development_dependency 'bundler', '~> 1.0' + + s.require_path = "lib" + + s.author = "Bob Aman" + s.email = "bob@sporkmonger.com" + s.homepage = "https://github.com/sporkmonger/addressable" + s.license = "Apache-2.0" + end + + Gem::PackageTask.new(GEM_SPEC) do |p| + p.gem_spec = GEM_SPEC + p.need_tar = true + p.need_zip = true + end + + desc "Generates .gemspec file" + task :gemspec do + spec_string = GEM_SPEC.to_ruby + File.open("#{GEM_SPEC.name}.gemspec", 'w') do |file| + file.write spec_string + end + end + + desc "Show information about the gem" + task :debug do + puts GEM_SPEC.to_ruby + end + + desc "Install the gem" + task :install => ["clobber", "gem:package"] do + sh "#{SUDO} gem install --local pkg/#{GEM_SPEC.full_name}" + end + + desc "Uninstall the gem" + task :uninstall do + installed_list = Gem.source_index.find_name(PKG_NAME) + if installed_list && + (installed_list.collect { |s| s.version.to_s}.include?(PKG_VERSION)) + sh( + "#{SUDO} gem uninstall --version '#{PKG_VERSION}' " + + "--ignore-dependencies --executables #{PKG_NAME}" + ) + end + end + + desc "Reinstall the gem" + task :reinstall => [:uninstall, :install] + + desc 'Package for release' + task :release => ["gem:package", "gem:gemspec"] do |t| + v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z' + abort "Versions don't match #{v} vs #{PROJ.version}" if v != PKG_VERSION + pkg = "pkg/#{GEM_SPEC.full_name}" + + changelog = File.open("CHANGELOG.md") { |file| file.read } + + puts "Releasing #{PKG_NAME} v. #{PKG_VERSION}" + Rake::Task["git:tag:create"].invoke + end +end + +desc "Alias to gem:package" +task "gem" => "gem:package" + +task "gem:release" => "gem:gemspec" + +task "clobber" => ["gem:clobber_package"] diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/git.rake b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/git.rake new file mode 100644 index 0000000..74ec2fd --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/git.rake @@ -0,0 +1,45 @@ +namespace :git do + namespace :tag do + desc "List tags from the Git repository" + task :list do + tags = `git tag -l` + tags.gsub!("\r", "") + tags = tags.split("\n").sort {|a, b| b <=> a } + puts tags.join("\n") + end + + desc "Create a new tag in the Git repository" + task :create do + changelog = File.open("CHANGELOG.md", "r") { |file| file.read } + puts "-" * 80 + puts changelog + puts "-" * 80 + puts + + v = ENV["VERSION"] or abort "Must supply VERSION=x.y.z" + abort "Versions don't match #{v} vs #{PKG_VERSION}" if v != PKG_VERSION + + git_status = `git status` + if git_status !~ /^nothing to commit/ + abort "Working directory isn't clean." + end + + tag = "#{PKG_NAME}-#{PKG_VERSION}" + msg = "Release #{PKG_NAME}-#{PKG_VERSION}" + + existing_tags = `git tag -l #{PKG_NAME}-*`.split('\n') + if existing_tags.include?(tag) + warn("Tag already exists, deleting...") + unless system "git tag -d #{tag}" + abort "Tag deletion failed." + end + end + puts "Creating git tag '#{tag}'..." + unless system "git tag -a -m \"#{msg}\" #{tag}" + abort "Tag creation failed." + end + end + end +end + +task "gem:release" => "git:tag:create" diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/metrics.rake b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/metrics.rake new file mode 100644 index 0000000..41fc5c2 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/metrics.rake @@ -0,0 +1,22 @@ +namespace :metrics do + task :lines do + lines, codelines, total_lines, total_codelines = 0, 0, 0, 0 + for file_name in FileList["lib/**/*.rb"] + f = File.open(file_name) + while line = f.gets + lines += 1 + next if line =~ /^\s*$/ + next if line =~ /^\s*#/ + codelines += 1 + end + puts "L: #{sprintf("%4d", lines)}, " + + "LOC #{sprintf("%4d", codelines)} | #{file_name}" + total_lines += lines + total_codelines += codelines + + lines, codelines = 0, 0 + end + + puts "Total: Lines #{total_lines}, LOC #{total_codelines}" + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/rspec.rake b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/rspec.rake new file mode 100644 index 0000000..e74a6c8 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/rspec.rake @@ -0,0 +1,21 @@ +require "rspec/core/rake_task" + +namespace :spec do + RSpec::Core::RakeTask.new(:simplecov) do |t| + t.pattern = FileList['spec/**/*_spec.rb'] + t.rspec_opts = ['--color', '--format', 'documentation'] + end + + namespace :simplecov do + desc "Browse the code coverage report." + task :browse => "spec:simplecov" do + require "launchy" + Launchy.open("coverage/index.html") + end + end +end + +desc "Alias to spec:simplecov" +task "spec" => "spec:simplecov" + +task "clobber" => ["spec:clobber_simplecov"] diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/yard.rake b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/yard.rake new file mode 100644 index 0000000..68e4491 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.1/tasks/yard.rake @@ -0,0 +1,27 @@ +require "rake" + +begin + require "yard" + require "yard/rake/yardoc_task" + + namespace :doc do + desc "Generate Yardoc documentation" + YARD::Rake::YardocTask.new do |yardoc| + yardoc.name = "yard" + yardoc.options = ["--verbose", "--markup", "markdown"] + yardoc.files = FileList[ + "lib/**/*.rb", "ext/**/*.c", + "README.md", "CHANGELOG.md", "LICENSE.txt" + ].exclude(/idna/) + end + end + + task "clobber" => ["doc:clobber_yard"] + + desc "Alias to doc:yard" + task "doc" => "doc:yard" +rescue LoadError + # If yard isn't available, it's not the end of the world + desc "Alias to doc:rdoc" + task "doc" => "doc:rdoc" +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/README b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/README new file mode 100644 index 0000000..fcd3f87 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/README @@ -0,0 +1,31 @@ +BlankSlate +=== + +BlankSlate provides an abstract base class with no predefined +methods (except for \_\_send__ and \_\_id__). +BlankSlate is useful as a base class when writing classes that +depend upon method_missing (e.g. dynamic proxies). + +Copyright 2004, 2006 by Jim Weirich (jim@weirichhouse.org). +All rights reserved. + + +Extracted from Builder because, for no conceivable reason, +blankslate isn't in its own gem. Gemified by David Masover, +moved to gemcutter by Jack Danger Canty (gemcutter@6brand.com +if you'd like to own this gem). + +Explanation on extraction from David Masover: + +So, Builder seems to have the most complete implementation of +BlankSlate, short of Ruby 1.9's BasicObject. The problem is, +this is part of Builder, and still inside the Builder gem. + +It's especially frustrating, because the Builder source +(lib/builder/blankslate.rb) seems to acknowledge that there +should be a separate gem. But the only reference I can find +refers to onestepback.org's gem repository, which isn't working. + +So I built my own. I'll try to keep it up to date with Builder. +The first three parts of the version number are +the Builder version; the last part is my revision. \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/Rakefile b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/Rakefile new file mode 100644 index 0000000..3464d64 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/Rakefile @@ -0,0 +1,13 @@ + +require 'bundler' +Bundler::GemHelper.install_tasks + +task :default => :spec + +require 'rake/testtask' +Rake::TestTask.new(:spec) do |test| + test.libs << '.' + test.ruby_opts = ['-rubygems'] + test.pattern = 'spec/*_spec.rb' + test.verbose = true +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/VERSION b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/VERSION new file mode 100644 index 0000000..7ac8e7a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/VERSION @@ -0,0 +1 @@ +2.1.2.4 \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/blankslate.gemspec b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/blankslate.gemspec new file mode 100644 index 0000000..dded1b8 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/blankslate.gemspec @@ -0,0 +1,22 @@ +# -*- encoding: utf-8 -*- +$:.push File.expand_path("../lib", __FILE__) +require "blankslate" + +Gem::Specification.new do |s| + s.name = "blankslate" + s.version = File.read('VERSION') + s.platform = Gem::Platform::RUBY + s.summary = 'BlankSlate extracted from Builder.' + s.email = 'rubygems@6brand.com' + s.authors = ['Jim Weirich', 'David Masover', 'Jack Danger Canty'] + s.email = "rubygems@6brand.com" + s.homepage = "http://github.com/masover/blankslate" + + s.add_development_dependency 'rspec' + s.add_development_dependency 'bundler' + + s.files = `git ls-files`.split("\n") + s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") + s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) } + s.require_paths = ["lib"] +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/spec/blankslate_spec.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/spec/blankslate_spec.rb new file mode 100644 index 0000000..03c8913 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/blankslate-2.1.2.4/spec/blankslate_spec.rb @@ -0,0 +1,39 @@ +require 'blankslate' +require 'rspec' + +describe BlankSlate do + let(:blank_slate) { BlankSlate.new } + + def call(obj, meth, *args) + BlankSlate.find_hidden_method(meth).bind(obj).call(*args) + end + + describe "cleanliness" do + it "should not have many methods" do + BlankSlate.instance_methods. + map(&:to_s).sort. + should == ["__id__", "__send__", "instance_eval", "object_id"] + end + end + + context "when methods are added to Object" do + after(:each) { + class Object + undef :foo + end + } + + it "should still be blank" do + class Object + def foo + end + end + Object.new.foo + + lambda { + BlankSlate.new.foo + }.should raise_error(NoMethodError) + end + + end +end \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/CHANGES b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/CHANGES new file mode 100644 index 0000000..0f608fe --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/CHANGES @@ -0,0 +1,107 @@ += Change Log + +== Version 3.2.0 + +* Ruby 2.0 compatibility changes. + +* Allow single quoted attributes. + +== Version 3.1.0 + +* Included the to_xs arity patch needed for weird Rails compatibility + issue. + +* Escaping newlines in attributes now. + +* Allow method caching + +== Version 3.0.0 + +* Ruby 1.9 compatiblity issues. + +== Version 2.2.0 + +* Applied patch from Thijs van der Vossen to allow UTF-8 encoded + output when the encoding is UTF-8 and $KCODE is UTF8. + +== Version 2.1.2 + +* Fixed bug where private methods in kernel could leak through using + tag!(). Thanks to Hagen Overdick for finding and diagnosing this + bug. + +== Version 2.1.1 + +* Fixed typo in XmlMarkup class docs (ident => indent). (from Martin + Fowler). +* Removed extra directory indirection from legacy CVS to SVN move. +* Removed some extraneous tabs from source. +* Fixed test on private methods in blankslate to differentiate between + targetted and untargetted private methods. +* Removed legacy capture of @self in XmlBase (@self was used back when + we used instance eval). +* Added additional tests for global functions (both direct and included). + +== Version 2.1.0 + +* Fixed bug in BlankSlate where including a module into Object could + cause methods to leak into BlankSlate. +* Made BlankSlate available as its own gem. Currently the builder gem + still directly includes the BlankSlate code. +* Added reveal capability to BlankSlate. + +== Version 2.0.0 + +* Added doc directory +* Added unit tests for XmlEvents. +* Added XChar module and used it in the _escape method. +* Attributes are now quoted by default when strings. Use Symbol + attribute values for unquoted behavior. + +== Version 1.2.4 + +* Added a cdata! command to an XML Builder (from Josh Knowles). + +== Version 1.2.3 + +The attributes in the instruction will be ordered: +version, encoding, standalone. + +== Version 1.2.2 + +Another fix for BlankSlate. The Kernal/Object traps added in 1.2.1 +failed when a method was defined late more than once. Since the +method was already marked as removed, another attempt to undefine it +raised an error. The fix was to check the list of instance methods +before attempting the undef operation. Thanks to Florian Gross and +David Heinemeier Hansson for the patch. + +== Version 1.2.1 + +BlankSlate now traps method definitions in Kernel and Object to avoid +late method definitions inadvertently becoming part of the definition +of BlankSlate as well. + +== Version 1.2.0 + +Improved support for entity declarations by allowing nested +declarations and removal of the attribute processing. + +Added namespace support. + +== Version 1.1.0 + +Added support for comments, entity declarations and processing instructions. + +== Version 1.0.0 + +Removed use of instace_eval making the use of XmlMarkup much +less prone to error. + +== Version 0.1.1 + +Bug fix. + +== Version 0.1.0 + +Initial version release. diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/MIT-LICENSE b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/MIT-LICENSE new file mode 100644 index 0000000..7d9be51 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/MIT-LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2003-2012 Jim Weirich (jim.weirich@gmail.com) + +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. diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/README.md b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/README.md new file mode 100644 index 0000000..1bc074b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/README.md @@ -0,0 +1,258 @@ +# Project: Builder + +## Goal + +Provide a simple way to create XML markup and data structures. + +## Classes + +Builder::XmlMarkup:: Generate XML markup notation +Builder::XmlEvents:: Generate XML events (i.e. SAX-like) + +**Notes:** + +* An Builder::XmlTree class to generate XML tree + (i.e. DOM-like) structures is also planned, but not yet implemented. + Also, the events builder is currently lagging the markup builder in + features. + +## Usage + +```ruby + require 'rubygems' + require_gem 'builder', '~> 2.0' + + builder = Builder::XmlMarkup.new + xml = builder.person { |b| b.name("Jim"); b.phone("555-1234") } + xml #=> Jim555-1234 +``` + +or + +```ruby + require 'rubygems' + require_gem 'builder' + + builder = Builder::XmlMarkup.new(:target=>STDOUT, :indent=>2) + builder.person { |b| b.name("Jim"); b.phone("555-1234") } + # + # Prints: + # + # Jim + # 555-1234 + # +``` + +## Compatibility + +### Version 2.0.0 Compatibility Changes + +Version 2.0.0 introduces automatically escaped attribute values for +the first time. Versions prior to 2.0.0 did not insert escape +characters into attribute values in the XML markup. This allowed +attribute values to explicitly reference entities, which was +occasionally used by a small number of developers. Since strings +could always be explicitly escaped by hand, this was not a major +restriction in functionality. + +However, it did surprise most users of builder. Since the body text is +normally escaped, everybody expected the attribute values to be +escaped as well. Escaped attribute values were the number one support +request on the 1.x Builder series. + +Starting with Builder version 2.0.0, all attribute values expressed as +strings will be processed and the appropriate characters will be +escaped (e.g. "&" will be translated to "&amp;"). Attribute values +that are expressed as Symbol values will not be processed for escaped +characters and will be unchanged in output. (Yes, this probably counts +as Symbol abuse, but the convention is convenient and flexible). + +Example: + +```ruby + xml = Builder::XmlMarkup.new + xml.sample(:escaped=>"This&That", :unescaped=>:"Here&There") + xml.target! => + +``` + +### Version 1.0.0 Compatibility Changes + +Version 1.0.0 introduces some changes that are not backwards +compatible with earlier releases of builder. The main areas of +incompatibility are: + +* Keyword based arguments to +new+ (rather than positional based). It + was found that a developer would often like to specify indentation + without providing an explicit target, or specify a target without + indentation. Keyword based arguments handle this situation nicely. + +* Builder must now be an explicit target for markup tags. Instead of + writing + +```ruby + xml_markup = Builder::XmlMarkup.new + xml_markup.div { strong("text") } +``` + + you need to write + +```ruby + xml_markup = Builder::XmlMarkup.new + xml_markup.div { xml_markup.strong("text") } +``` + +* The builder object is passed as a parameter to all nested markup + blocks. This allows you to create a short alias for the builder + object that can be used within the block. For example, the previous + example can be written as: + +```ruby + xml_markup = Builder::XmlMarkup.new + xml_markup.div { |xml| xml.strong("text") } +``` + +* If you have both a pre-1.0 and a post-1.0 gem of builder installed, + you can choose which version to use through the RubyGems + +require_gem+ facility. + +```ruby + require_gem 'builder', "~> 0.0" # Gets the old version + require_gem 'builder', "~> 1.0" # Gets the new version +``` + +## Features + +* XML Comments are supported ... + +```ruby + xml_markup.comment! "This is a comment" + #=> +``` + +* XML processing instructions are supported ... + +```ruby + xml_markup.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8" + #=> +``` + + If the processing instruction is omitted, it defaults to "xml". + When the processing instruction is "xml", the defaults attributes + are: + + version: 1.0 + encoding: "UTF-8" + + (NOTE: if the encoding is set to "UTF-8" and $KCODE is set to + "UTF8", then Builder will emit UTF-8 encoded strings rather than + encoding non-ASCII characters as entities.) + +* XML entity declarations are now supported to a small degree. + +```ruby + xml_markup.declare! :DOCTYPE, :chapter, :SYSTEM, "../dtds/chapter.dtd" + #=> +``` + + The parameters to a declare! method must be either symbols or + strings. Symbols are inserted without quotes, and strings are + inserted with double quotes. Attribute-like arguments in hashes are + not allowed. + + If you need to have an argument to declare! be inserted without + quotes, but the argument does not conform to the typical Ruby + syntax for symbols, then use the :"string" form to specify a symbol. + + For example: + +```ruby + xml_markup.declare! :ELEMENT, :chapter, :"(title,para+)" + #=> +``` + + Nested entity declarations are allowed. For example: + +```ruby + @xml_markup.declare! :DOCTYPE, :chapter do |x| + x.declare! :ELEMENT, :chapter, :"(title,para+)" + x.declare! :ELEMENT, :title, :"(#PCDATA)" + x.declare! :ELEMENT, :para, :"(#PCDATA)" + end + + #=> + + + + + ]> +``` + +* Some support for XML namespaces is now available. If the first + argument to a tag call is a symbol, it will be joined to the tag to + produce a namespace:tag combination. It is easier to show this than + describe it. + +```ruby + xml.SOAP :Envelope do ... end +``` + + Just put a space before the colon in a namespace to produce the + right form for builder (e.g. "SOAP:Envelope" => + "xml.SOAP :Envelope") + +* String attribute values are now escaped by default by + Builder (NOTE: this is _new_ behavior as of version 2.0). + + However, occasionally you need to use entities in attribute values. + Using a symbol (rather than a string) for an attribute value will + cause Builder to not run its quoting/escaping algorithm on that + particular value. + + (Note: The +escape_attrs+ option for builder is now + obsolete). + + Example: + +```ruby + xml = Builder::XmlMarkup.new + xml.sample(:escaped=>"This&That", :unescaped=>:"Here&There") + xml.target! => + +``` + +* UTF-8 Support + + Builder correctly translates UTF-8 characters into valid XML. (New + in version 2.0.0). Thanks to Sam Ruby for the translation code. + + You can get UTF-8 encoded output by making sure that the XML + encoding is set to "UTF-8" and that the $KCODE variable is set to + "UTF8". + +```ruby + $KCODE = 'UTF8' + xml = Builder::Markup.new + xml.instruct!(:xml, :encoding => "UTF-8") + xml.sample("Iñtërnâtiônàl") + xml.target! => + "Iñtërnâtiônàl" +``` + +## Links + +| Description | Link | +| :----: | :----: | +| Documents | http://builder.rubyforge.org/ | +| Github Clone | git://github.com/jimweirich/builder.git | +| Issue / Bug Reports | https://github.com/jimweirich/builder/issues?state=open | + +## Contact + +| Description | Value | +| :----: | :----: | +| Author | Jim Weirich | +| Email | jim.weirich@gmail.com | +| Home Page | http://onestepback.org | +| License | MIT Licence (http://www.opensource.org/licenses/mit-license.html) | diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/Rakefile b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/Rakefile new file mode 100644 index 0000000..b082fbe --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/Rakefile @@ -0,0 +1,195 @@ +# Rakefile for rake -*- ruby -*- + +# Copyright 2004, 2005, 2006 by Jim Weirich (jim@weirichhouse.org). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. + +require 'rake/clean' +require 'rake/testtask' +begin + require 'rubygems' + require 'rubygems/package_task' + require 'rdoc/task' +rescue Exception + nil +end + +require './lib/builder/version' + +# Determine the current version of the software + +CLOBBER.include('pkg', 'html') +CLEAN.include('pkg/builder-*').include('pkg/blankslate-*').exclude('pkg/*.gem') + +PKG_VERSION = Builder::VERSION + +SRC_RB = FileList['lib/**/*.rb'] + +# The default task is run if rake is given no explicit arguments. + +desc "Default Task" +task :default => :test_all + +# Test Tasks --------------------------------------------------------- + +desc "Run all tests" +task :test_all => [:test_units] +task :ta => [:test_all] + +task :tu => [:test_units] + +Rake::TestTask.new("test_units") do |t| + t.test_files = FileList['test/test*.rb'] + t.libs << "." + t.verbose = false +end + +# Create a task to build the RDOC documentation tree. + +if defined?(RDoc) + rd = RDoc::Task.new("rdoc") { |rdoc| + rdoc.rdoc_dir = 'html' + rdoc.title = "Builder for Markup" + rdoc.options << '--line-numbers' << '--inline-source' << '--main' << 'README.rdoc' + rdoc.rdoc_files.include('lib/**/*.rb', '[A-Z]*', 'doc/**/*.rdoc').exclude("TAGS") + rdoc.template = 'doc/jamis.rb' + } +else + rd = Struct.new(:rdoc_files).new([]) +end + +# ==================================================================== +# Create a task that will package the Rake software into distributable +# gem files. + +PKG_FILES = FileList[ + '[A-Z]*', + 'doc/**/*', + 'lib/**/*.rb', + 'test/**/*.rb', + 'rakelib/**/*' +] +PKG_FILES.exclude('test/test_cssbuilder.rb') +PKG_FILES.exclude('lib/builder/css.rb') +PKG_FILES.exclude('TAGS') + +BLANKSLATE_FILES = FileList[ + 'lib/blankslate.rb', + 'test/test_blankslate.rb' +] + +if ! defined?(Gem) + puts "Package Target requires RubyGEMs" +else + spec = Gem::Specification.new do |s| + + #### Basic information. + + s.name = 'builder' + s.version = PKG_VERSION + s.summary = "Builders for MarkUp." + s.description = %{\ +Builder provides a number of builder objects that make creating structured data +simple to do. Currently the following builder objects are supported: + +* XML Markup +* XML Events +} + + s.files = PKG_FILES.to_a + s.require_path = 'lib' + + s.test_files = PKG_FILES.select { |fn| fn =~ /^test\/test/ } + + s.has_rdoc = true + s.extra_rdoc_files = rd.rdoc_files.reject { |fn| fn =~ /\.rb$/ }.to_a + s.rdoc_options << + '--title' << 'Builder -- Easy XML Building' << + '--main' << 'README.rdoc' << + '--line-numbers' + + s.author = "Jim Weirich" + s.email = "jim.weirich@gmail.com" + s.homepage = "http://onestepback.org" + s.license = 'MIT' + end + + blankslate_spec = Gem::Specification.new do |s| + + #### Basic information. + + s.name = 'blankslate' + s.version = PKG_VERSION + s.summary = "Blank Slate base class." + s.description = %{\ +BlankSlate provides a base class where almost all of the methods from Object and +Kernel have been removed. This is useful when providing proxy object and other +classes that make heavy use of method_missing. +} + + s.files = BLANKSLATE_FILES.to_a + s.require_path = 'lib' + + s.test_files = PKG_FILES.select { |fn| fn =~ /^test\/test/ } + + s.has_rdoc = true + s.extra_rdoc_files = rd.rdoc_files.reject { |fn| fn =~ /\.rb$/ }.to_a + s.rdoc_options << + '--title' << 'BlankSlate -- Base Class for building proxies.' << + '--main' << 'README.rdoc' << + '--line-numbers' + + s.author = "Jim Weirich" + s.email = "jim.weirich@gmail.com" + s.homepage = "http://onestepback.org" + s.license = 'MIT' + end + + namespace 'builder' do + Gem::PackageTask.new(spec) do |t| + t.need_tar = false + end + end + + namespace 'blankslate' do + Gem::PackageTask.new(blankslate_spec) do |t| + t.need_tar = false + end + end + + task :package => [:remove_tags, 'builder:package', 'blankslate:package'] +end + +task :remove_tags do + rm "TAGS" rescue nil +end + +# RCov --------------------------------------------------------------- +begin + require 'rcov/rcovtask' + + Rcov::RcovTask.new do |t| + t.libs << "test" + t.rcov_opts = [ + '-xRakefile', '--text-report' + ] + t.test_files = FileList[ + 'test/test*.rb' + ] + t.output_dir = 'coverage' + t.verbose = true + end +rescue LoadError + # No rcov available +end + +desc "Install the jamis RDoc template" +task :install_jamis_template do + require 'rbconfig' + dest_dir = File.join(Config::CONFIG['rubylibdir'], "rdoc/generators/template/html") + fail "Unabled to write to #{dest_dir}" unless File.writable?(dest_dir) + install "doc/jamis.rb", dest_dir, :verbose => true +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/doc/jamis.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/doc/jamis.rb new file mode 100644 index 0000000..a00b583 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/doc/jamis.rb @@ -0,0 +1,591 @@ +module RDoc +module Page + +FONTS = "\"Bitstream Vera Sans\", Verdana, Arial, Helvetica, sans-serif" + +STYLE = < pre { + padding: 0.5em; + border: 1px dotted black; + background: #FFE; +} + +CSS + +XHTML_PREAMBLE = %{ + +} + +HEADER = XHTML_PREAMBLE + < + + %title% + + + + + + + +ENDHEADER + +FILE_PAGE = < + + + + +
File
%short_name%
+ + + + + + + + + +
Path:%full_path% +IF:cvsurl +  (CVS) +ENDIF:cvsurl +
Modified:%dtm_modified%
+
+ +
+HTML + +################################################################### + +CLASS_PAGE = < + %classmod%
%full_name% + + + + + + +IF:parent + + + + +ENDIF:parent +
In: +START:infiles +HREF:full_path_url:full_path: +IF:cvsurl + (CVS) +ENDIF:cvsurl +END:infiles +
Parent: +IF:par_url + +ENDIF:par_url +%parent% +IF:par_url + +ENDIF:par_url +
+ + + +HTML + +################################################################### + +METHOD_LIST = < +IF:diagram +
+ %diagram% +
+ENDIF:diagram + +IF:description +

%description%
+ENDIF:description + +IF:requires +
Required Files
+
    +START:requires +
  • HREF:aref:name:
  • +END:requires +
+ENDIF:requires + +IF:toc +
Contents
+ +ENDIF:toc + +IF:methods +
Methods
+
    +START:methods +
  • HREF:aref:name:
  • +END:methods +
+ENDIF:methods + +IF:includes +
Included Modules
+
    +START:includes +
  • HREF:aref:name:
  • +END:includes +
+ENDIF:includes + +START:sections +IF:sectitle + +IF:seccomment +
+%seccomment% +
+ENDIF:seccomment +ENDIF:sectitle + +IF:classlist +
Classes and Modules
+ %classlist% +ENDIF:classlist + +IF:constants +
Constants
+ +START:constants + + + + + +IF:desc + + + + +ENDIF:desc +END:constants +
%name%=%value%
 %desc%
+ENDIF:constants + +IF:attributes +
Attributes
+ +START:attributes + + + + + +END:attributes +
+IF:rw +[%rw%] +ENDIF:rw + %name%%a_desc%
+ENDIF:attributes + +IF:method_list +START:method_list +IF:methods +
%type% %category% methods
+START:methods +
+
+IF:callseq + %callseq% +ENDIF:callseq +IFNOT:callseq + %name%%params% +ENDIF:callseq +IF:codeurl +[ source ] +ENDIF:codeurl +
+IF:m_desc +
+ %m_desc% +
+ENDIF:m_desc +IF:aka +
+ This method is also aliased as +START:aka + %name% +END:aka +
+ENDIF:aka +IF:sourcecode +
+ +
+
+%sourcecode%
+
+
+
+ENDIF:sourcecode +
+END:methods +ENDIF:methods +END:method_list +ENDIF:method_list +END:sections + +HTML + +FOOTER = < + +ENDFOOTER + +BODY = HEADER + < + +
+ #{METHOD_LIST} +
+ + #{FOOTER} +ENDBODY + +########################## Source code ########################## + +SRC_PAGE = XHTML_PREAMBLE + < +%title% + + + + +
%code%
+ + +HTML + +########################## Index ################################ + +FR_INDEX_BODY = < + + + + + + + +
+START:entries +%name%
+END:entries +
+ +HTML + +CLASS_INDEX = FILE_INDEX +METHOD_INDEX = FILE_INDEX + +INDEX = XHTML_PREAMBLE + < + + %title% + + + + + + + + + +IF:inline_source + +ENDIF:inline_source +IFNOT:inline_source + + + + +ENDIF:inline_source + + <body bgcolor="white"> + Click <a href="html/index.html">here</a> for a non-frames + version of this page. + </body> + + + + +HTML + +end +end + + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/doc/releases/builder-1.2.4.rdoc b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/doc/releases/builder-1.2.4.rdoc new file mode 100644 index 0000000..a1cf54f --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/doc/releases/builder-1.2.4.rdoc @@ -0,0 +1,31 @@ += Builder 1.2.4 Released. + +Added a "CDATA" method to the XML Markup builder (from Josh Knowles). + +== What is Builder? + +Builder::XmlMarkup allows easy programmatic creation of XML markup. +For example: + + builder = Builder::XmlMarkup.new(:target=>STDOUT, :indent=>2) + builder.person { |b| b.name("Jim"); b.phone("555-1234") } + puts builder.target! + +will generate: + + + Jim + 555-1234 + + +== Availability + +The easiest way to get and install builder is via RubyGems ... + + gem install builder (you may need root/admin privileges) + +== Thanks + +* Josh Knowles for the cdata! patch. + +-- Jim Weirich diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/doc/releases/builder-2.0.0.rdoc b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/doc/releases/builder-2.0.0.rdoc new file mode 100644 index 0000000..ed9e086 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/doc/releases/builder-2.0.0.rdoc @@ -0,0 +1,46 @@ += Builder 2.0.0 Released. + +== Changes in 2.0.0 + +* UTF-8 characters in data are now correctly translated to their XML + equivalents. (Thanks to Sam Ruby) + +* Attribute values are now escaped by default. See the README + file for details. + +NOTE: The escaping attribute values by default is different +than in previous releases of Builder. This makes version 2.0.0 +somewhat incompatible with the 1.x series of Builder. If you use "&", +"<", or ">" in attributes values, you may have to change your +code. (Essentially you remove the manual escaping. The new way is +easier, believe me). + +== What is Builder? + +Builder::XmlMarkup is a library that allows easy programmatic creation +of XML markup. For example: + + builder = Builder::XmlMarkup.new(:target=>STDOUT, :indent=>2) + builder.person { |b| b.name("Jim"); b.phone("555-1234") } + +will generate: + + + Jim + 555-1234 + + +== Availability + +The easiest way to get and install builder is via RubyGems ... + + gem install builder (you may need root/admin privileges) + +== Thanks + +* Sam Ruby for the XChar module and the related UTF-8 translation + tools. +* Also to Sam Ruby for gently persuading me to start quoting attribute + values. + +-- Jim Weirich diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/doc/releases/builder-2.1.1.rdoc b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/doc/releases/builder-2.1.1.rdoc new file mode 100755 index 0000000..dbbf121 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/doc/releases/builder-2.1.1.rdoc @@ -0,0 +1,58 @@ += Builder 2.1.1 Released. + +Release 2.1.1 of Builder is mainly a bug fix release. + +== Changes in 2.1.1 + +* Added reveal capability to BlankSlate. + +* Fixed a bug in BlankSlate where including a module into Object could + cause methods to leak into BlankSlate. + +* Fixed typo in XmlMarkup class docs (from Martin Fowler). + +* Fixed test on private methods to differentiate between targetted and + untargetted private methods. + +* Removed legacy capture of @self in XmlBase (@self was used back when + we used instance eval). + +* Added additional tests for global functions (both direct and + included). + +* Several misc internal cleanups, including rearranging the source + code tree. + +NOTE: The escaping attribute values by default is different +than in previous releases of Builder. This makes version 2.0.x +somewhat incompatible with the 1.x series of Builder. If you use "&", +"<", or ">" in attributes values, you may have to change your +code. (Essentially you remove the manual escaping. The new way is +easier, believe me). + +== What is Builder? + +Builder::XmlMarkup is a library that allows easy programmatic creation +of XML markup. For example: + + builder = Builder::XmlMarkup.new(:target=>STDOUT, :indent=>2) + builder.person { |b| b.name("Jim"); b.phone("555-1234") } + +will generate: + + + Jim + 555-1234 + + +== Availability + +The easiest way to get and install builder is via RubyGems ... + + gem install builder (you may need root/admin privileges) + +== Thanks + +* Martin Fowler for spotting some typos in the documentation. + +-- Jim Weirich diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/rakelib/publish.rake b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/rakelib/publish.rake new file mode 100644 index 0000000..511536d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/rakelib/publish.rake @@ -0,0 +1,20 @@ +# Optional publish task for Rake + +begin +require 'rake/contrib/sshpublisher' +require 'rake/contrib/rubyforgepublisher' + +publisher = Rake::CompositePublisher.new +publisher.add Rake::RubyForgePublisher.new('builder', 'jimweirich') +publisher.add Rake::SshFilePublisher.new( + 'linode', + 'htdocs/software/builder', + '.', + 'builder.blurb') + +desc "Publish the Documentation to RubyForge." +task :publish => [:rdoc] do + publisher.upload +end +rescue LoadError +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/rakelib/tags.rake b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/rakelib/tags.rake new file mode 100644 index 0000000..1fefb72 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/rakelib/tags.rake @@ -0,0 +1,62 @@ +#!/usr/bin/env ruby + +module Tags + extend Rake::DSL if defined?(Rake::DSL) + + PROG = ENV['TAGS'] || 'ctags' + + RAKEFILES = FileList['Rakefile', '**/*.rake'] + + FILES = FileList['**/*.rb', '**/*.js'] + RAKEFILES + FILES.exclude('pkg', 'dist') + + PROJECT_DIR = ['.'] + + RVM_GEMDIR = File.join(`rvm gemdir`.strip, "gems") rescue nil + SYSTEM_DIRS = RVM_GEMDIR && File.exists?(RVM_GEMDIR) ? RVM_GEMDIR : [] + + module_function + + # Convert key_word to --key-word. + def keyword(key) + k = key.to_s.gsub(/_/, '-') + (k.length == 1) ? "-#{k}" : "--#{k}" + end + + # Run ctags command + def run(*args) + opts = { + :e => true, + :totals => true, + :recurse => true, + } + opts = opts.merge(args.pop) if args.last.is_a?(Hash) + command_args = opts.map { |k, v| + (v == true) ? keyword(k) : "#{keyword(k)}=#{v}" + }.join(" ") + sh %{#{Tags::PROG} #{command_args} #{args.join(' ')}} + end +end + +namespace "tags" do + desc "Generate an Emacs TAGS file" + task :emacs, [:all] => Tags::FILES do |t, args| + puts "Making Emacs TAGS file" + verbose(true) do + Tags.run(Tags::PROJECT_DIR) + Tags.run(Tags::RAKEFILES, + :language_force => "ruby", + :append => true) + if args.all + Tags::SYSTEM_DIRS.each do |dir| + Tags.run(dir, + :language_force => "ruby", + :append => true) + end + end + end + end +end + +desc "Generate the TAGS file" +task :tags, [:all] => ["tags:emacs"] diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/rakelib/testing.rake b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/rakelib/testing.rake new file mode 100644 index 0000000..0a3a6ff --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/rakelib/testing.rake @@ -0,0 +1,7 @@ +require 'rake/testtask' + +Rake::TestTask.new do |t| + t.libs << "test" + t.test_files = FileList['test/test*.rb'] + t.verbose = true +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/helper.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/helper.rb new file mode 100644 index 0000000..f87bb19 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/helper.rb @@ -0,0 +1,12 @@ +require 'minitest/autorun' + +module Builder + class Test < Minitest::Test + alias :assert_raise :assert_raises + alias :assert_not_nil :refute_nil + + def assert_nothing_raised + yield + end + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/performance.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/performance.rb new file mode 100644 index 0000000..e764205 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/performance.rb @@ -0,0 +1,41 @@ +#!/usr/bin/env ruby +# encoding: iso-8859-1 + +#-- +# Portions copyright 2004 by Jim Weirich (jim@weirichhouse.org). +# Portions copyright 2005 by Sam Ruby (rubys@intertwingly.net). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +require 'builder/xmlmarkup' +require 'benchmark' + +text = "This is a test of the new xml markup. I�t�rn�ti�n�liz�ti�n\n" * 10000 + +include Benchmark # we need the CAPTION and FMTSTR constants +include Builder +n = 50 +Benchmark.benchmark do |bm| + tf = bm.report("base") { + n.times do + x = XmlMarkup.new + x.text(text) + x.target! + end + } + def XmlMarkup._escape(text) + text.to_xs + end + tf = bm.report("to_xs") { + n.times do + x = XmlMarkup.new + x.text(text) + x.target! + end + } +end + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/preload.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/preload.rb new file mode 100644 index 0000000..395e043 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/preload.rb @@ -0,0 +1,39 @@ +#!/usr/bin/env ruby + +#-- +# Portions copyright 2004 by Jim Weirich (jim@weirichhouse.org). +# Portions copyright 2005 by Sam Ruby (rubys@intertwingly.net). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +# We are defining method_added in Kernel and Object so that when +# BlankSlate overrides them later, we can verify that it correctly +# calls the older hooks. + +module Kernel + class << self + attr_reader :k_added_names + alias_method :preload_method_added, :method_added + def method_added(name) + preload_method_added(name) + @k_added_names ||= [] + @k_added_names << name + end + end +end + +class Object + class << self + attr_reader :o_added_names + alias_method :preload_method_added, :method_added + def method_added(name) + preload_method_added(name) + @o_added_names ||= [] + @o_added_names << name + end + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_blankslate.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_blankslate.rb new file mode 100644 index 0000000..fe56f09 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_blankslate.rb @@ -0,0 +1,213 @@ +#!/usr/bin/env ruby + +#-- +# Portions copyright 2004 by Jim Weirich (jim@weirichhouse.org). +# Portions copyright 2005 by Sam Ruby (rubys@intertwingly.net). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +require 'helper' +require 'preload' +require 'blankslate' +require 'stringio' + +# Methods to be introduced into the Object class late. +module LateObject + def late_object + 33 + end + def LateObject.included(mod) + # Modules defining an included method should not prevent blank + # slate erasure! + end +end + +# Methods to be introduced into the Kernel module late. +module LateKernel + def late_kernel + 44 + end + def LateKernel.included(mod) + # Modules defining an included method should not prevent blank + # slate erasure! + end +end + +# Introduce some late methods (both module and direct) into the Kernel +# module. +module Kernel + include LateKernel + + def late_addition + 1234 + end + + def double_late_addition + 22 + end +end + + +# Introduce some late methods (both module and direct) into the Object +# class. +class Object + include LateObject + def another_late_addition + 4321 + end +end + +# Introduce some late methods by inclusion. +module GlobalModule + def global_inclusion + 42 + end +end +include GlobalModule + +def direct_global + 43 +end + +###################################################################### +# Test case for blank slate. +# +class TestBlankSlate < Builder::Test + def setup + @bs = BlankSlate.new + end + + def test_undefined_methods_remain_undefined + assert_raise(NoMethodError) { @bs.no_such_method } + assert_raise(NoMethodError) { @bs.nil? } + end + + + # NOTE: NameError is acceptable because the lack of a '.' means that + # Ruby can't tell if it is a method or a local variable. + def test_undefined_methods_remain_undefined_during_instance_eval + assert_raise(NoMethodError, NameError) do + @bs.instance_eval do nil? end + end + assert_raise(NoMethodError, NameError) do + @bs.instance_eval do no_such_method end + end + end + + def test_private_methods_are_undefined + assert_raise(NoMethodError) do + @bs.puts "HI" + end + end + + def test_targetted_private_methods_are_undefined_during_instance_eval + assert_raise(NoMethodError, NameError) do + @bs.instance_eval do self.puts "HI" end + end + end + + def test_untargetted_private_methods_are_defined_during_instance_eval + oldstdout = $stdout + $stdout = StringIO.new + @bs.instance_eval do + puts "HI" + end + ensure + $stdout = oldstdout + end + + def test_methods_added_late_to_kernel_remain_undefined + assert_equal 1234, nil.late_addition + assert_raise(NoMethodError) { @bs.late_addition } + end + + def test_methods_added_late_to_object_remain_undefined + assert_equal 4321, nil.another_late_addition + assert_raise(NoMethodError) { @bs.another_late_addition } + end + + def test_methods_added_late_to_global_remain_undefined + assert_equal 42, global_inclusion + assert_raise(NoMethodError) { @bs.global_inclusion } + end + + def test_preload_method_added + assert Kernel.k_added_names.include?(:late_addition) + assert Object.o_added_names.include?(:another_late_addition) + end + + def test_method_defined_late_multiple_times_remain_undefined + assert_equal 22, nil.double_late_addition + assert_raise(NoMethodError) { @bs.double_late_addition } + end + + def test_late_included_module_in_object_is_ok + assert_equal 33, 1.late_object + assert_raise(NoMethodError) { @bs.late_object } + end + + def test_late_included_module_in_kernel_is_ok + assert_raise(NoMethodError) { @bs.late_kernel } + end + + def test_revealing_previously_hidden_methods_are_callable + with_to_s = Class.new(BlankSlate) do + reveal :to_s + end + assert_match(/^#<.*>$/, with_to_s.new.to_s) + end + + def test_revealing_previously_hidden_methods_are_callable_with_block + Object.class_eval <<-EOS + def given_block(&block) + block + end + EOS + + with_given_block = Class.new(BlankSlate) do + reveal :given_block + end + assert_not_nil with_given_block.new.given_block {} + end + + def test_revealing_a_hidden_method_twice_is_ok + with_to_s = Class.new(BlankSlate) do + reveal :to_s + reveal :to_s + end + assert_match(/^#<.*>$/, with_to_s.new.to_s) + end + + def test_revealing_unknown_hidden_method_is_an_error + assert_raises(RuntimeError) do + Class.new(BlankSlate) do + reveal :xyz + end + end + end + + def test_global_includes_still_work + assert_nothing_raised do + assert_equal 42, global_inclusion + assert_equal 42, Object.new.global_inclusion + assert_equal 42, "magic number".global_inclusion + assert_equal 43, direct_global + end + end + + def test_reveal_should_not_bind_to_an_instance + with_object_id = Class.new(BlankSlate) do + reveal(:object_id) + end + + obj1 = with_object_id.new + obj2 = with_object_id.new + + assert obj1.object_id != obj2.object_id, + "Revealed methods should not be bound to a particular instance" + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_eventbuilder.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_eventbuilder.rb new file mode 100644 index 0000000..80709ef --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_eventbuilder.rb @@ -0,0 +1,150 @@ +#!/usr/bin/env ruby + +#-- +# Portions copyright 2004 by Jim Weirich (jim@weirichhouse.org). +# Portions copyright 2005 by Sam Ruby (rubys@intertwingly.net). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +require 'helper' +require 'preload' +require 'builder' +require 'builder/xmlevents' + +class TestEvents < Builder::Test + + class Target + attr_reader :events + + def initialize + @events = [] + end + + def start_tag(tag, attrs) + @events << [:start_tag, tag, attrs] + end + + def end_tag(tag) + @events << [:end_tag, tag] + end + + def text(string) + @events << [:text, string] + end + + end + + + def setup + @target = Target.new + @xml = Builder::XmlEvents.new(:target=>@target) + end + + def test_simple + @xml.one + expect [:start_tag, :one, nil] + expect [:end_tag, :one] + expect_done + end + + def test_nested + @xml.one { @xml.two } + expect [:start_tag, :one, nil] + expect [:start_tag, :two, nil] + expect [:end_tag, :two] + expect [:end_tag, :one] + expect_done + end + + def test_text + @xml.one("a") + expect [:start_tag, :one, nil] + expect [:text, "a"] + expect [:end_tag, :one] + expect_done + end + + def test_special_text + @xml.one("H&R") + expect [:start_tag, :one, nil] + expect [:text, "H&R"] + expect [:end_tag, :one] + expect_done + end + + def test_text_with_entity + @xml.one("H&R") + expect [:start_tag, :one, nil] + expect [:text, "H&R"] + expect [:end_tag, :one] + expect_done + end + + def test_attributes + @xml.a(:b=>"c", :x=>"y") + expect [:start_tag, :a, {:x => "y", :b => "c"}] + expect [:end_tag, :a] + expect_done + end + + def test_moderately_complex + @xml.tag! "address-book" do |x| + x.entry :id=>"1" do + x.name { + x.first "Bill" + x.last "Smith" + } + x.address "Cincinnati" + end + x.entry :id=>"2" do + x.name { + x.first "John" + x.last "Doe" + } + x.address "Columbus" + end + end + expect [:start_tag, "address-book".intern, nil] + expect [:start_tag, :entry, {:id => "1"}] + expect [:start_tag, :name, nil] + expect [:start_tag, :first, nil] + expect [:text, "Bill"] + expect [:end_tag, :first] + expect [:start_tag, :last, nil] + expect [:text, "Smith"] + expect [:end_tag, :last] + expect [:end_tag, :name] + expect [:start_tag, :address, nil] + expect [:text, "Cincinnati"] + expect [:end_tag, :address] + expect [:end_tag, :entry] + expect [:start_tag, :entry, {:id => "2"}] + expect [:start_tag, :name, nil] + expect [:start_tag, :first, nil] + expect [:text, "John"] + expect [:end_tag, :first] + expect [:start_tag, :last, nil] + expect [:text, "Doe"] + expect [:end_tag, :last] + expect [:end_tag, :name] + expect [:start_tag, :address, nil] + expect [:text, "Columbus"] + expect [:end_tag, :address] + expect [:end_tag, :entry] + expect [:end_tag, "address-book".intern] + expect_done + end + + def expect(value) + assert_equal value, @target.events.shift + end + + def expect_done + assert_nil @target.events.shift + end + +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_markupbuilder.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_markupbuilder.rb new file mode 100644 index 0000000..39f5750 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_markupbuilder.rb @@ -0,0 +1,611 @@ +#!/usr/bin/env ruby + +#-- +# Portions copyright 2004 by Jim Weirich (jim@weirichhouse.org). +# Portions copyright 2005 by Sam Ruby (rubys@intertwingly.net). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +require 'helper' +require 'preload' +require 'builder' +require 'builder/xmlmarkup' + +class TestMarkup < Builder::Test + def setup + @xml = Builder::XmlMarkup.new + end + + def test_create + assert_not_nil @xml + end + + def test_simple + @xml.simple + assert_equal "", @xml.target! + end + + def test_value + @xml.value("hi") + assert_equal "hi", @xml.target! + end + + def test_empty_value + @xml.value("") + assert_equal "", @xml.target! + end + + def test_nil_value + @xml.value(nil) + assert_equal "", @xml.target! + end + + def test_no_value + @xml.value() + assert_equal "", @xml.target! + end + + def test_nested + @xml.outer { |x| x.inner("x") } + assert_equal "x", @xml.target! + end + + def test_attributes + @xml.ref(:id => 12) + assert_equal %{}, @xml.target! + end + + def test_single_quotes_for_attrs + @xml = Builder::XmlMarkup.new(:quote => :single) + @xml.ref(:id => 12) + assert_equal %{}, @xml.target! + end + + def test_mixed_quotes_for_attrs + @xml = Builder::XmlMarkup.new(:quote => :single) + x = Builder::XmlMarkup.new(:target=>@xml, :quote => :double) + @xml.ref(:id => 12) do + x.link(:id => 13) + end + assert_equal %{}, @xml.target! + end + + def test_string_attributes_are_escaped_by_default + @xml.ref(:id => "H&R") + assert_equal %{}, @xml.target! + end + + def test_symbol_attributes_are_unescaped_by_default + @xml.ref(:id => :"H&R") + assert_equal %{}, @xml.target! + end + + def test_attributes_escaping_can_be_turned_on + @xml = Builder::XmlMarkup.new + @xml.ref(:id => "") + assert_equal %{}, @xml.target! + end + + def test_mixed_attribute_escaping_with_nested_builders + x = Builder::XmlMarkup.new(:target=>@xml) + @xml.ref(:id=>:"H&R") { + x.element(:tag=>"Long&Short") + } + assert_equal "", + @xml.target! + end + + def test_multiple_attributes + @xml.ref(:id => 12, :name => "bill") + assert_match %r{^$}, @xml.target! + end + + def test_attributes_with_text + @xml.a("link", :href=>"http://onestepback.org") + assert_equal %{link}, @xml.target! + end + + def test_attributes_with_newlines + @xml.abbr("W3C", :title=>"World\nWide\rWeb\r\nConsortium") + assert_equal %{W3C}, + @xml.target! + end + + def test_complex + @xml.body(:bg=>"#ffffff") { |x| + x.title("T", :style=>"red") + } + assert_equal %{T}, @xml.target! + end + + def test_funky_symbol + @xml.tag!("non-ruby-token", :id=>1) { |x| x.ok } + assert_equal %{}, @xml.target! + end + + def test_tag_can_handle_private_method + @xml.tag!("loop", :id=>1) { |x| x.ok } + assert_equal %{}, @xml.target! + end + + def test_no_explicit_marker + @xml.p { |x| x.b("HI") } + assert_equal "

HI

", @xml.target! + end + + def test_reference_local_vars + n = 3 + @xml.ol { |x| n.times { x.li(n) } } + assert_equal "
  1. 3
  2. 3
  3. 3
", @xml.target! + end + + def test_reference_methods + @xml.title { |x| x.a { x.b(_name) } } + assert_equal "<a><b>bob</b></a>", @xml.target! + end + + def test_append_text + @xml.p { |x| x.br; x.text! "HI" } + assert_equal "


HI

", @xml.target! + end + + def test_ambiguous_markup + ex = assert_raise(ArgumentError) { + @xml.h1("data1") { b } + } + assert_match(/\btext\b/, ex.message) + assert_match(/\bblock\b/, ex.message) + end + + def test_capitalized_method + @xml.P { |x| x.B("hi"); x.BR(); x.EM { x.text! "world" } } + assert_equal "

hi
world

", @xml.target! + end + + def test_escaping + @xml.div { |x| x.text! ""; x.em("H&R Block") } + assert_equal %{
<hi>H&R Block
}, @xml.target! + end + + def test_nil + b = Builder::XmlMarkup.new + b.tag! "foo", nil + assert_equal %{}, b.target! + end + + def test_nil_without_explicit_nil_handling + b = Builder::XmlMarkup.new(:explicit_nil_handling => false) + b.tag! "foo", nil + assert_equal %{}, b.target! + end + + def test_nil_with_explicit_nil_handling + b = Builder::XmlMarkup.new(:explicit_nil_handling => true) + b.tag! "foo", nil + assert_equal %{}, b.target! + end + + def test_non_escaping + @xml.div("ns:xml"=>:"&xml;") { |x| x << ""; x.em("H&R Block") } + assert_equal %{
H&R Block
}, @xml.target! + end + + def test_return_value + str = @xml.x("men") + assert_equal @xml.target!, str + end + + def test_stacked_builders + b = Builder::XmlMarkup.new( :target => @xml ) + b.div { @xml.span { @xml.a("text", :href=>"ref") } } + assert_equal "", @xml.target! + end + + def _name + "bob" + end +end + +class TestAttributeEscaping < Builder::Test + + def setup + @xml = Builder::XmlMarkup.new + end + + def test_element_gt + @xml.title('1<2') + assert_equal '1<2', @xml.target! + end + + def test_element_amp + @xml.title('AT&T') + assert_equal 'AT&T', @xml.target! + end + + def test_element_amp2 + @xml.title('&') + assert_equal '&amp;', @xml.target! + end + + def test_attr_less + @xml.a(:title => '2>1') + assert_equal '', @xml.target! + end + + def test_attr_amp + @xml.a(:title => 'AT&T') + assert_equal '', @xml.target! + end + + def test_attr_quot + @xml.a(:title => '"x"') + assert_equal '', @xml.target! + end + +end + +class TestNameSpaces < Builder::Test + def setup + @xml = Builder::XmlMarkup.new(:indent=>2) + end + + def test_simple_name_spaces + @xml.rdf :RDF + assert_equal "\n", @xml.target! + end + + def test_long + xml = Builder::XmlMarkup.new(:indent=>2) + xml.instruct! + xml.rdf :RDF, + "xmlns:rdf" => :"&rdf;", + "xmlns:rdfs" => :"&rdfs;", + "xmlns:xsd" => :"&xsd;", + "xmlns:owl" => :"&owl;" do + xml.owl :Class, :'rdf:ID'=>'Bird' do + xml.rdfs :label, 'bird' + xml.rdfs :subClassOf do + xml.owl :Restriction do + xml.owl :onProperty, 'rdf:resource'=>'#wingspan' + xml.owl :maxCardinality,1,'rdf:datatype'=>'&xsd;nonNegativeInteger' + end + end + end + end + assert_match(/^<\?xml/, xml.target!) + assert_match(/\n/m, xml.target!) + end + + def test_ensure + xml = Builder::XmlMarkup.new + xml.html do + xml.body do + begin + xml.p do + raise Exception.new('boom') + end + rescue Exception => e + xml.pre e + end + end + end + assert_match %r{

}, xml.target! + assert_match %r{

}, xml.target! + end +end + +class TestDeclarations < Builder::Test + def setup + @xml = Builder::XmlMarkup.new(:indent=>2) + end + + def test_declare + @xml.declare! :element + assert_equal "\n", @xml.target! + end + + def test_bare_arg + @xml.declare! :element, :arg + assert_equal"\n", @xml.target! + end + + def test_string_arg + @xml.declare! :element, "string" + assert_equal"\n", @xml.target! + end + + def test_mixed_args + @xml.declare! :element, :x, "y", :z, "-//OASIS//DTD DocBook XML//EN" + assert_equal "\n", @xml.target! + end + + def test_nested_declarations + @xml = Builder::XmlMarkup.new + @xml.declare! :DOCTYPE, :chapter do |x| + x.declare! :ELEMENT, :chapter, "(title,para+)".intern + end + assert_equal "]>", @xml.target! + end + + def test_nested_indented_declarations + @xml.declare! :DOCTYPE, :chapter do |x| + x.declare! :ELEMENT, :chapter, "(title,para+)".intern + end + assert_equal "\n]>\n", @xml.target! + end + + def test_complex_declaration + @xml.declare! :DOCTYPE, :chapter do |x| + x.declare! :ELEMENT, :chapter, "(title,para+)".intern + x.declare! :ELEMENT, :title, "(#PCDATA)".intern + x.declare! :ELEMENT, :para, "(#PCDATA)".intern + end + expected = %{ + + +]> +} + assert_equal expected, @xml.target! + end +end + + +class TestSpecialMarkup < Builder::Test + def setup + @xml = Builder::XmlMarkup.new(:indent=>2) + end + + def test_comment + @xml.comment!("COMMENT") + assert_equal "\n", @xml.target! + end + + def test_indented_comment + @xml.p { @xml.comment! "OK" } + assert_equal "

\n \n

\n", @xml.target! + end + + def test_instruct + @xml.instruct! :abc, :version=>"0.9" + assert_equal "\n", @xml.target! + end + + def test_indented_instruct + @xml.p { @xml.instruct! :xml } + assert_match %r{

\n <\?xml version="1.0" encoding="UTF-8"\?>\n

\n}, + @xml.target! + end + + def test_instruct_without_attributes + @xml.instruct! :zz + assert_equal "\n", @xml.target! + end + + def test_xml_instruct + @xml.instruct! + assert_match(/^<\?xml version="1.0" encoding="UTF-8"\?>$/, @xml.target!) + end + + def test_xml_instruct_with_overrides + @xml.instruct! :xml, :encoding=>"UCS-2" + assert_match(/^<\?xml version="1.0" encoding="UCS-2"\?>$/, @xml.target!) + end + + def test_xml_instruct_with_standalong + @xml.instruct! :xml, :encoding=>"UCS-2", :standalone=>"yes" + assert_match(/^<\?xml version="1.0" encoding="UCS-2" standalone="yes"\?>$/, @xml.target!) + end + + def test_no_blocks + assert_raise(Builder::IllegalBlockError) do + @xml.instruct! { |x| x.hi } + end + assert_raise(Builder::IllegalBlockError) do + @xml.comment!(:element) { |x| x.hi } + end + end + + def test_cdata + @xml.cdata!("TEST") + assert_equal "\n", @xml.target! + end + + def test_cdata_with_ampersand + @xml.cdata!("TEST&CHECK") + assert_equal "\n", @xml.target! + end + + def test_cdata_with_included_close + @xml.cdata!("TEST]]>CHECK") + assert_equal "CHECK]]>\n", @xml.target! + end +end + +class TestIndentedXmlMarkup < Builder::Test + def setup + @xml = Builder::XmlMarkup.new(:indent=>2) + end + + def test_one_level + @xml.ol { |x| x.li "text" } + assert_equal "
    \n
  1. text
  2. \n
\n", @xml.target! + end + + def test_two_levels + @xml.p { |x| + x.ol { x.li "text" } + x.br + } + assert_equal "

\n

    \n
  1. text
  2. \n
\n
\n

\n", @xml.target! + end + + def test_initial_level + @xml = Builder::XmlMarkup.new(:indent=>2, :margin=>4) + @xml.name { |x| x.first("Jim") } + assert_equal " \n Jim\n \n", @xml.target! + end + + class TestUtfMarkup < Builder::Test + if ! String.method_defined?(:encode) + def setup + @old_kcode = $KCODE + end + + def teardown + $KCODE = @old_kcode + end + + def test_use_entities_if_no_encoding_is_given_and_kcode_is_none + $KCODE = 'NONE' + xml = Builder::XmlMarkup.new + xml.p("\xE2\x80\x99") + assert_match(%r(

), xml.target!) # + end + + def test_use_entities_if_encoding_is_utf_but_kcode_is_not + $KCODE = 'NONE' + xml = Builder::XmlMarkup.new + xml.instruct!(:xml, :encoding => 'UTF-8') + xml.p("\xE2\x80\x99") + assert_match(%r(

), xml.target!) # + end + else + # change in behavior. As there is no $KCODE anymore, the default + # moves from "does not understand utf-8" to "supports utf-8". + + def test_use_entities_if_no_encoding_is_given_and_kcode_is_none + xml = Builder::XmlMarkup.new + xml.p("\xE2\x80\x99") + assert_match("

\u2019

", xml.target!) # + end + + def test_use_entities_if_encoding_is_utf_but_kcode_is_not + xml = Builder::XmlMarkup.new + xml.instruct!(:xml, :encoding => 'UTF-8') + xml.p("\xE2\x80\x99") + assert_match("

\u2019

", xml.target!) # + end + end + + def encode string, encoding + if !String.method_defined?(:encode) + $KCODE = encoding + string + elsif encoding == 'UTF8' + string.force_encoding('UTF-8') + else + string + end + end + + def test_use_entities_if_kcode_is_utf_but_encoding_is_dummy_encoding + xml = Builder::XmlMarkup.new + xml.instruct!(:xml, :encoding => 'UTF-16') + xml.p(encode("\xE2\x80\x99", 'UTF8')) + assert_match(%r(

), xml.target!) # + end + + def test_use_entities_if_kcode_is_utf_but_encoding_is_unsupported_encoding + xml = Builder::XmlMarkup.new + xml.instruct!(:xml, :encoding => 'UCS-2') + xml.p(encode("\xE2\x80\x99", 'UTF8')) + assert_match(%r(

), xml.target!) # + end + + def test_use_utf8_if_encoding_defaults_and_kcode_is_utf8 + xml = Builder::XmlMarkup.new + xml.p(encode("\xE2\x80\x99",'UTF8')) + assert_equal encode("

\xE2\x80\x99

",'UTF8'), xml.target! + end + + def test_use_utf8_if_both_encoding_and_kcode_are_utf8 + xml = Builder::XmlMarkup.new + xml.instruct!(:xml, :encoding => 'UTF-8') + xml.p(encode("\xE2\x80\x99",'UTF8')) + assert_match encode("

\xE2\x80\x99

",'UTF8'), xml.target! + end + + def test_use_utf8_if_both_encoding_and_kcode_are_utf8_with_lowercase + xml = Builder::XmlMarkup.new + xml.instruct!(:xml, :encoding => 'utf-8') + xml.p(encode("\xE2\x80\x99",'UTF8')) + assert_match encode("

\xE2\x80\x99

",'UTF8'), xml.target! + end + end + + class TestXmlEvents < Builder::Test + def setup + @handler = EventHandler.new + @xe = Builder::XmlEvents.new(:target=>@handler) + end + + def test_simple + @xe.p + assert_equal [:start, :p, nil], @handler.events.shift + assert_equal [:end, :p], @handler.events.shift + end + + def test_text + @xe.p("HI") + assert_equal [:start, :p, nil], @handler.events.shift + assert_equal [:text, "HI"], @handler.events.shift + assert_equal [:end, :p], @handler.events.shift + end + + def test_attributes + @xe.p("id"=>"2") + ev = @handler.events.shift + assert_equal [:start, :p], ev[0,2] + assert_equal "2", ev[2]['id'] + assert_equal [:end, :p], @handler.events.shift + end + + def test_indented + @xml = Builder::XmlEvents.new(:indent=>2, :target=>@handler) + @xml.p { |x| x.b("HI") } + assert_equal [:start, :p, nil], @handler.events.shift + assert_equal "\n ", pop_text + assert_equal [:start, :b, nil], @handler.events.shift + assert_equal "HI", pop_text + assert_equal [:end, :b], @handler.events.shift + assert_equal "\n", pop_text + assert_equal [:end, :p], @handler.events.shift + end + + def pop_text + result = '' + while ! @handler.events.empty? && @handler.events[0][0] == :text + result << @handler.events[0][1] + @handler.events.shift + end + result + end + + class EventHandler + attr_reader :events + def initialize + @events = [] + end + + def start_tag(sym, attrs) + @events << [:start, sym, attrs] + end + + def end_tag(sym) + @events << [:end, sym] + end + + def text(txt) + @events << [:text, txt] + end + end + end + +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_method_caching.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_method_caching.rb new file mode 100644 index 0000000..bf5111e --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_method_caching.rb @@ -0,0 +1,62 @@ +#!/usr/bin/env ruby + +#-- +# Portions copyright 2011 by Bart ten Brinke (info@retrosync.com). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +require 'helper' +require 'preload' +require 'builder' + +class TestMethodCaching < Builder::Test + + # We can directly ask if xml object responds to the cache_me or + # do_not_cache_me methods because xml is derived from BasicObject + # (and repond_to? is not defined in BasicObject). + # + # Instead we are going to stub out method_missing so that it throws + # an error, and then make sure that error is either thrown or not + # thrown as appropriate. + + def teardown + super + Builder::XmlBase.cache_method_calls = true + end + + def test_caching_does_not_break_weird_symbols + xml = Builder::XmlMarkup.new + xml.__send__("work-order", 1) + assert_equal "1", xml.target! + end + + def test_method_call_caching + xml = Builder::XmlMarkup.new + xml.cache_me + + def xml.method_missing(*args) + ::Kernel.fail StandardError, "SHOULD NOT BE CALLED" + end + assert_nothing_raised do + xml.cache_me + end + end + + def test_method_call_caching_disabled + Builder::XmlBase.cache_method_calls = false + xml = Builder::XmlMarkup.new + xml.do_not_cache_me + + def xml.method_missing(*args) + ::Kernel.fail StandardError, "SHOULD BE CALLED" + end + assert_raise(StandardError, "SHOULD BE CALLED") do + xml.do_not_cache_me + end + end + +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_namecollision.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_namecollision.rb new file mode 100644 index 0000000..a093f1b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_namecollision.rb @@ -0,0 +1,39 @@ +#!/usr/bin/env ruby + +#-- +# Portions copyright 2004 by Jim Weirich (jim@weirichhouse.org). +# Portions copyright 2005 by Sam Ruby (rubys@intertwingly.net). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +require 'helper' +require 'builder/xchar' + +class TestNameCollisions < Builder::Test + module Collide + def xchr + end + end + + def test_no_collision + assert_nothing_raised do + Builder.check_for_name_collision(Collide, :not_defined) + end + end + + def test_collision + assert_raise RuntimeError do + Builder.check_for_name_collision(Collide, "xchr") + end + end + + def test_collision_with_symbol + assert_raise RuntimeError do + Builder.check_for_name_collision(Collide, :xchr) + end + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_xchar.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_xchar.rb new file mode 100644 index 0000000..ab89556 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/builder-3.2.3/test/test_xchar.rb @@ -0,0 +1,78 @@ +#!/usr/bin/env ruby +# encoding: us-ascii + +#-- +# Portions copyright 2004 by Jim Weirich (jim@weirichhouse.org). +# Portions copyright 2005 by Sam Ruby (rubys@intertwingly.net). +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. +#++ + +#!/usr/bin/env ruby + +require 'helper' +require 'builder/xchar' + +if String.method_defined?(:encode) + class String + ENCODING_BINARY = Encoding.find('BINARY') + + # shim method for testing purposes + def to_xs(escape=true) + raise NameError.new('to_xs') unless caller[0].index(__FILE__) + + result = Builder::XChar.encode(self) + if escape + result.gsub(/[^\u0000-\u007F]/) {|c| "&##{c.ord};"} + else + # really only useful for testing purposes + result.force_encoding(ENCODING_BINARY) + end + end + end +end + +class TestXmlEscaping < Builder::Test + REPLACEMENT_CHAR = Builder::XChar::REPLACEMENT_CHAR.to_xs + + def test_ascii + assert_equal 'abc', 'abc'.to_xs + end + + def test_predefined + assert_equal '&', '&'.to_xs # ampersand + assert_equal '<', '<'.to_xs # left angle bracket + assert_equal '>', '>'.to_xs # right angle bracket + end + + def test_invalid + assert_equal REPLACEMENT_CHAR, "\x00".to_xs # null + assert_equal REPLACEMENT_CHAR, "\x0C".to_xs # form feed + assert_equal REPLACEMENT_CHAR, "\xEF\xBF\xBF".to_xs # U+FFFF + end + + def test_iso_8859_1 + assert_equal 'ç', "\xE7".to_xs # small c cedilla + assert_equal '©', "\xA9".to_xs # copyright symbol + end + + def test_win_1252 + assert_equal '’', "\x92".to_xs # smart quote + assert_equal '€', "\x80".to_xs # euro + end + + def test_utf8 + assert_equal '’', "\xE2\x80\x99".to_xs # right single quote + assert_equal '©', "\xC2\xA9".to_xs # copy + end + + def test_utf8_verbatim + assert_equal "\xE2\x80\x99", "\xE2\x80\x99".to_xs(false) # right single quote + assert_equal "\xC2\xA9", "\xC2\xA9".to_xs(false) # copy + assert_equal "\xC2\xA9&\xC2\xA9", + "\xC2\xA9&\xC2\xA9".to_xs(false) # copy with ampersand + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/README_INDEX.rdoc b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/README_INDEX.rdoc new file mode 100644 index 0000000..7332653 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/README_INDEX.rdoc @@ -0,0 +1,123 @@ += CodeRay + +Tired of blue'n'gray? Try the original version of this documentation on +coderay.rubychan.de[http://coderay.rubychan.de/doc/] :-) + +== About + +CodeRay is a Ruby library for syntax highlighting. + +You put your code in, and you get it back colored; Keywords, strings, +floats, comments - all in different colors. And with line numbers. + +*Syntax* *Highlighting*... +* makes code easier to read and maintain +* lets you detect syntax errors faster +* helps you to understand the syntax of a language +* looks nice +* is what everybody wants to have on their website +* solves all your problems and makes the girls run after you + + +== Installation + + % gem install coderay + + +=== Dependencies + +CodeRay needs Ruby 1.8.7+ or 1.9.2+. It also runs on Rubinius and JRuby. + + +== Example Usage + + require 'coderay' + + html = CodeRay.scan("puts 'Hello, world!'", :ruby).div(:line_numbers => :table) + + +== Documentation + +See CodeRay. + + +== Credits + +=== Special Thanks to + +* licenser (Heinz N. Gies) for ending my QBasic career, inventing the Coder + project and the input/output plugin system. + CodeRay would not exist without him. +* bovi (Daniel Bovensiepen) for helping me out on various occasions. + +=== Thanks to + +* Caleb Clausen for writing RubyLexer (see + http://rubyforge.org/projects/rubylexer) and lots of very interesting mail + traffic +* birkenfeld (Georg Brandl) and mitsuhiku (Arnim Ronacher) for PyKleur, now pygments. + You guys rock! +* Jamis Buck for writing Syntax (see http://rubyforge.org/projects/syntax) + I got some useful ideas from it. +* Doug Kearns and everyone else who worked on ruby.vim - it not only helped me + coding CodeRay, but also gave me a wonderful target to reach for the Ruby + scanner. +* everyone who uses CodeBB on http://www.rubyforen.de and http://www.python-forum.de +* iGEL, magichisoka, manveru, WoNáDo and everyone I forgot from rubyforen.de +* Dethix from ruby-mine.de +* zickzackw +* Dookie (who is no longer with us...) and Leonidas from http://www.python-forum.de +* Andreas Schwarz for finding out that CaseIgnoringWordList was not case + ignoring! Such things really make you write tests. +* closure for the first version of the Scheme scanner. +* Stefan Walk for the first version of the JavaScript and PHP scanners. +* Josh Goebel for another version of the JavaScript scanner, a SQL and a Diff scanner. +* Jonathan Younger for pointing out the licence confusion caused by wrong LICENSE file. +* Jeremy Hinegardner for finding the shebang-on-empty-file bug in FileType. +* Charles Oliver Nutter and Yehuda Katz for helping me benchmark CodeRay on JRuby. +* Andreas Neuhaus for pointing out a markup bug in coderay/for_redcloth. +* 0xf30fc7 for the FileType patch concerning Delphi file extensions. +* The folks at redmine.org - thank you for using and fixing CodeRay! +* Keith Pitt for his SQL scanners +* Rob Aldred for the terminal encoder +* Trans for pointing out $DEBUG dependencies +* Flameeyes for finding that Term::ANSIColor was obsolete +* matz and all Ruby gods and gurus +* The inventors of: the computer, the internet, the true color display, HTML & + CSS, VIM, Ruby, pizza, microwaves, guitars, scouting, programming, anime, + manga, coke and green ice tea. + +Where would we be without all those people? + +=== Created using + +* Ruby[http://ruby-lang.org/] +* Chihiro (my Sony VAIO laptop); Henrietta (my old MacBook); + Triella, born Rico (my new MacBook); as well as + Seras and Hikari (my PCs) +* RDE[http://homepage2.nifty.com/sakazuki/rde_e.html], + VIM[http://vim.org] and TextMate[http://macromates.com] +* Subversion[http://subversion.tigris.org/] +* Redmine[http://redmine.org/] +* Firefox[http://www.mozilla.org/products/firefox/], + Firebug[http://getfirebug.com/], Safari[http://www.apple.com/safari/], and + Thunderbird[http://www.mozilla.org/products/thunderbird/] +* RubyGems[http://docs.rubygems.org/] and Rake[http://rake.rubyforge.org/] +* TortoiseSVN[http://tortoisesvn.tigris.org/] using Apache via + XAMPP[http://www.apachefriends.org/en/xampp.html] +* RDoc (though I'm quite unsatisfied with it) +* Microsoft Windows (yes, I confess!) and MacOS X +* GNUWin32, MinGW and some other tools to make the shell under windows a bit + less useless +* Term::ANSIColor[http://term-ansicolor.rubyforge.org/] +* PLEAC[http://pleac.sourceforge.net/] code examples +* Github +* Travis CI (http://travis-ci.org/rubychan/github) + +=== Free + +* As you can see, CodeRay was created under heavy use of *free* software. +* So CodeRay is also *free*. +* If you use CodeRay to create software, think about making this software + *free*, too. +* Thanks :) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/Rakefile b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/Rakefile new file mode 100644 index 0000000..c9b1e8a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/Rakefile @@ -0,0 +1,37 @@ +require 'bundler/gem_tasks' + +$:.unshift File.dirname(__FILE__) unless $:.include? '.' + +ROOT = '.' +LIB_ROOT = File.join ROOT, 'lib' + +task :default => :test + +if File.directory? 'rake_tasks' + + # load rake tasks from subfolder + for task_file in Dir['rake_tasks/*.rake'].sort + load task_file + end + +else + + # fallback tasks when rake_tasks folder is not present (eg. in the distribution package) + desc 'Run CodeRay tests (basic)' + task :test do + ruby './test/functional/suite.rb' + ruby './test/functional/for_redcloth.rb' + end + + gem 'rdoc' if defined? gem + require 'rdoc/task' + desc 'Generate documentation for CodeRay' + Rake::RDocTask.new :doc do |rd| + rd.title = 'CodeRay Documentation' + rd.main = 'README_INDEX.rdoc' + rd.rdoc_files.add Dir['lib'] + rd.rdoc_files.add rd.main + rd.rdoc_dir = 'doc' + end + +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/bin/coderay b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/bin/coderay new file mode 100755 index 0000000..130a50b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/bin/coderay @@ -0,0 +1,215 @@ +#!/usr/bin/env ruby +require 'coderay' + +$options, args = ARGV.partition { |arg| arg[/^-[hv]$|--\w+/] } +subcommand = args.first if /^\w/ === args.first +subcommand = nil if subcommand && File.exist?(subcommand) +args.delete subcommand + +def option? *options + !($options & options).empty? +end + +def tty? + $stdout.tty? || option?('--tty') +end + +def version + puts <<-USAGE +CodeRay #{CodeRay::VERSION} + USAGE +end + +def help + puts <<-HELP +This is CodeRay #{CodeRay::VERSION}, a syntax highlighting tool for selected languages. + +usage: + coderay [-language] [input] [-format] [output] + +defaults: + language detect from input file name or shebang; fall back to plain text + input STDIN + format detect from output file name or use terminal; fall back to HTML + output STDOUT + +common: + coderay file.rb # highlight file to terminal + coderay file.rb -page > file.html # highlight file to HTML page + coderay file.rb -div > file.html # highlight file to HTML snippet + +configure output: + coderay file.py output.json # output tokens as JSON + coderay file.py -loc # count lines of code in Python file + +configure input: + coderay -python file # specify the input language + coderay -ruby # take input from STDIN + +more: + coderay stylesheet [style] # print CSS stylesheet + HELP +end + +def commands + puts <<-COMMANDS + general: + highlight code highlighting (default command, optional) + stylesheet print the CSS stylesheet with the given name (aliases: style, css) + + about: + list [of] list all available plugins (or just the scanners|encoders|styles|filetypes) + commands print this list + help show some help + version print CodeRay version + COMMANDS +end + +def print_list_of plugin_host + plugins = plugin_host.all_plugins.map do |plugin| + info = " #{plugin.plugin_id}: #{plugin.title}" + + aliases = (plugin.aliases - [:default]).map { |key| "-#{key}" }.sort_by { |key| key.size } + if plugin.respond_to?(:file_extension) || !aliases.empty? + additional_info = [] + additional_info << aliases.join(', ') unless aliases.empty? + info << " (#{additional_info.join('; ')})" + end + + info << ' <-- default' if plugin.aliases.include? :default + + info + end + puts plugins.sort +end + +if option? '-v', '--version' + version +end + +if option? '-h', '--help' + help +end + +case subcommand +when 'highlight', nil + if ARGV.empty? + version + help + else + signature = args.map { |arg| arg[/^-/] ? '-' : 'f' }.join + names = args.map { |arg| arg.sub(/^-/, '') } + case signature + when /^$/ + exit + when /^ff?$/ + input_file, output_file, = *names + when /^f-f?$/ + input_file, output_format, output_file, = *names + when /^-ff?$/ + input_lang, input_file, output_file, = *names + when /^-f-f?$/ + input_lang, input_file, output_format, output_file, = *names + when /^--?f?$/ + input_lang, output_format, output_file, = *names + else + $stdout = $stderr + help + puts + puts "Unknown parameter order: #{args.join ' '}, expected: [-language] [input] [-format] [output]" + exit 1 + end + + if input_file + input_lang ||= CodeRay::FileType.fetch input_file, :text, true + end + + if output_file + output_format ||= CodeRay::FileType[output_file] || :plain + else + output_format ||= :terminal + end + + output_format = :page if output_format.to_s == 'html' + + if input_file + input = File.read input_file + else + input = $stdin.read + end + + begin + file = + if output_file + File.open output_file, 'w' + else + $stdout + end + CodeRay.encode(input, input_lang, output_format, :out => file) + file.puts + rescue CodeRay::PluginHost::PluginNotFound => boom + $stdout = $stderr + if boom.message[/CodeRay::(\w+)s could not load plugin :?(.*?): /] + puts "I don't know the #$1 \"#$2\"." + else + puts boom.message + end + # puts "I don't know this plugin: #{boom.message[/Could not load plugin (.*?): /, 1]}." + rescue CodeRay::Scanners::Scanner::ScanError + # this is sometimes raised by pagers; ignore + # FIXME: rescue Errno::EPIPE + ensure + file.close if output_file + end + end +when 'li', 'list' + arg = args.first && args.first.downcase + if [nil, 's', 'sc', 'scanner', 'scanners'].include? arg + puts 'input languages (Scanners):' + print_list_of CodeRay::Scanners + end + + if [nil, 'e', 'en', 'enc', 'encoder', 'encoders'].include? arg + puts 'output formats (Encoders):' + print_list_of CodeRay::Encoders + end + + if [nil, 'st', 'style', 'styles'].include? arg + puts 'CSS themes for HTML output (Styles):' + print_list_of CodeRay::Styles + end + + if [nil, 'f', 'ft', 'file', 'filetype', 'filetypes'].include? arg + puts 'recognized file types:' + + filetypes = Hash.new { |h, k| h[k] = [] } + CodeRay::FileType::TypeFromExt.inject filetypes do |types, (ext, type)| + types[type.to_s] << ".#{ext}" + types + end + CodeRay::FileType::TypeFromName.inject filetypes do |types, (name, type)| + types[type.to_s] << name + types + end + + filetypes.sort.each do |type, exts| + puts " #{type}: #{exts.sort_by { |ext| ext.size }.join(', ')}" + end + end +when 'stylesheet', 'style', 'css' + puts CodeRay::Encoders[:html]::CSS.new(args.first || :default).stylesheet +when 'commands' + commands +when 'help' + help +else + $stdout = $stderr + help + puts + if subcommand[/\A\w+\z/] + puts "Unknown command: #{subcommand}" + else + puts "File not found: #{subcommand}" + end + exit 1 +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/test/functional/basic.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/test/functional/basic.rb new file mode 100755 index 0000000..752d4ba --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/test/functional/basic.rb @@ -0,0 +1,318 @@ +# encoding: utf-8 +require 'test/unit' +require File.expand_path('../../lib/assert_warning', __FILE__) + +$:.unshift File.expand_path('../../../lib', __FILE__) +require 'coderay' + +class BasicTest < Test::Unit::TestCase + + def test_version + assert_nothing_raised do + assert_match(/\A\d\.\d\.\d?\z/, CodeRay::VERSION) + end + end + + def with_empty_load_path + old_load_path = $:.dup + $:.clear + yield + ensure + $:.replace old_load_path + end + + def test_autoload + with_empty_load_path do + assert_nothing_raised do + CodeRay::Scanners::Java::BuiltinTypes + end + end + end + + RUBY_TEST_CODE = 'puts "Hello, World!"' + + RUBY_TEST_TOKENS = [ + ['puts', :ident], + [' ', :space], + [:begin_group, :string], + ['"', :delimiter], + ['Hello, World!', :content], + ['"', :delimiter], + [:end_group, :string] + ].flatten + def test_simple_scan + assert_nothing_raised do + assert_equal RUBY_TEST_TOKENS, CodeRay.scan(RUBY_TEST_CODE, :ruby).tokens + end + end + + RUBY_TEST_HTML = 'puts "' + + 'Hello, World!"' + def test_simple_highlight + assert_nothing_raised do + assert_equal RUBY_TEST_HTML, CodeRay.scan(RUBY_TEST_CODE, :ruby).html + end + end + + def test_scan_file + CodeRay.scan_file __FILE__ + end + + def test_encode + assert_equal 1, CodeRay.encode('test', :python, :count) + end + + def test_encode_tokens + assert_equal 1, CodeRay.encode_tokens(CodeRay::Tokens['test', :string], :count) + end + + def test_encode_file + assert_equal File.read(__FILE__), CodeRay.encode_file(__FILE__, :text) + end + + def test_highlight + assert_match '
test
', CodeRay.highlight('test', :python) + end + + def test_highlight_file + assert_match "require 'test/unit'\n", CodeRay.highlight_file(__FILE__) + end + + def test_duo + assert_equal(RUBY_TEST_CODE, + CodeRay::Duo[:plain, :text].highlight(RUBY_TEST_CODE)) + assert_equal(RUBY_TEST_CODE, + CodeRay::Duo[:plain => :text].highlight(RUBY_TEST_CODE)) + end + + def test_duo_stream + assert_equal(RUBY_TEST_CODE, + CodeRay::Duo[:plain, :text].highlight(RUBY_TEST_CODE, :stream => true)) + end + + def test_comment_filter + assert_equal <<-EXPECTED, CodeRay.scan(<<-INPUT, :ruby).comment_filter.text +#!/usr/bin/env ruby + +code + +more code + EXPECTED +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + INPUT + end + + def test_lines_of_code + assert_equal 2, CodeRay.scan(<<-INPUT, :ruby).lines_of_code +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + INPUT + rHTML = <<-RHTML + + + + + + <%= controller.controller_name.titleize %>: <%= controller.action_name %> + <%= stylesheet_link_tag 'scaffold' %> + + + +

<%= flash[:notice] %>

+ +
+ <%= yield %> +
+ + + + RHTML + assert_equal 0, CodeRay.scan(rHTML, :html).lines_of_code + assert_equal 0, CodeRay.scan(rHTML, :php).lines_of_code + assert_equal 0, CodeRay.scan(rHTML, :yaml).lines_of_code + assert_equal 4, CodeRay.scan(rHTML, :erb).lines_of_code + end + + def test_list_of_encoders + assert_kind_of(Array, CodeRay::Encoders.list) + assert CodeRay::Encoders.list.include?(:count) + end + + def test_list_of_scanners + assert_kind_of(Array, CodeRay::Scanners.list) + assert CodeRay::Scanners.list.include?(:text) + end + + def test_token_kinds + assert_kind_of Hash, CodeRay::TokenKinds + for kind, css_class in CodeRay::TokenKinds + assert_kind_of Symbol, kind + if css_class != false + assert_kind_of String, css_class, "TokenKinds[%p] == %p" % [kind, css_class] + end + end + assert_equal 'reserved', CodeRay::TokenKinds[:reserved] + assert_equal false, CodeRay::TokenKinds[:shibboleet] + end + + class Milk < CodeRay::Encoders::Encoder + FILE_EXTENSION = 'cocoa' + end + + class HoneyBee < CodeRay::Encoders::Encoder + end + + def test_encoder_file_extension + assert_nothing_raised do + assert_equal 'html', CodeRay::Encoders::Page::FILE_EXTENSION + assert_equal 'cocoa', Milk::FILE_EXTENSION + assert_equal 'cocoa', Milk.new.file_extension + assert_equal 'honeybee', HoneyBee::FILE_EXTENSION + assert_equal 'honeybee', HoneyBee.new.file_extension + end + assert_raise NameError do + HoneyBee::MISSING_CONSTANT + end + end + + def test_encoder_tokens + encoder = CodeRay::Encoders::Encoder.new + encoder.send :setup, {} + assert_raise(ArgumentError) { encoder.token :strange, '' } + encoder.token 'test', :debug + end + + def test_encoder_deprecated_interface + encoder = CodeRay::Encoders::Encoder.new + encoder.send :setup, {} + assert_warning 'Using old Tokens#<< interface.' do + encoder << ['test', :content] + end + assert_raise ArgumentError do + encoder << [:strange, :input] + end + assert_raise ArgumentError do + encoder.encode_tokens [['test', :token]] + end + end + + def encoder_token_interface_deprecation_warning_given + CodeRay::Encoders::Encoder.send :class_variable_get, :@@CODERAY_TOKEN_INTERFACE_DEPRECATION_WARNING_GIVEN + end + + def test_scanner_file_extension + assert_equal 'rb', CodeRay::Scanners::Ruby.file_extension + assert_equal 'rb', CodeRay::Scanners::Ruby.new.file_extension + assert_equal 'java', CodeRay::Scanners::Java.file_extension + assert_equal 'java', CodeRay::Scanners::Java.new.file_extension + end + + def test_scanner_lang + assert_equal :ruby, CodeRay::Scanners::Ruby.lang + assert_equal :ruby, CodeRay::Scanners::Ruby.new.lang + assert_equal :java, CodeRay::Scanners::Java.lang + assert_equal :java, CodeRay::Scanners::Java.new.lang + end + + def test_scanner_tokenize + assert_equal ['foo', :plain], CodeRay::Scanners::Plain.new.tokenize('foo') + assert_equal [['foo', :plain], ['bar', :plain]], CodeRay::Scanners::Plain.new.tokenize(['foo', 'bar']) + CodeRay::Scanners::Plain.new.tokenize 42 + end + + def test_scanner_tokens + scanner = CodeRay::Scanners::Plain.new + scanner.tokenize('foo') + assert_equal ['foo', :plain], scanner.tokens + scanner.string = '' + assert_equal ['', :plain], scanner.tokens + end + + def test_scanner_line_and_column + scanner = CodeRay::Scanners::Plain.new "foo\nbär+quux" + assert_equal 0, scanner.pos + assert_equal 1, scanner.line + assert_equal 1, scanner.column + scanner.scan(/foo/) + assert_equal 3, scanner.pos + assert_equal 1, scanner.line + assert_equal 4, scanner.column + scanner.scan(/\n/) + assert_equal 4, scanner.pos + assert_equal 2, scanner.line + assert_equal 1, scanner.column + scanner.scan(/b/) + assert_equal 5, scanner.pos + assert_equal 2, scanner.line + assert_equal 2, scanner.column + scanner.scan(/a/) + assert_equal 5, scanner.pos + assert_equal 2, scanner.line + assert_equal 2, scanner.column + scanner.scan(/ä/) + assert_equal 7, scanner.pos + assert_equal 2, scanner.line + assert_equal 4, scanner.column + scanner.scan(/r/) + assert_equal 8, scanner.pos + assert_equal 2, scanner.line + assert_equal 5, scanner.column + end + + def test_scanner_use_subclasses + assert_raise NotImplementedError do + CodeRay::Scanners::Scanner.new + end + end + + class InvalidScanner < CodeRay::Scanners::Scanner + end + + def test_scanner_scan_tokens + assert_raise NotImplementedError do + InvalidScanner.new.tokenize '' + end + end + + class RaisingScanner < CodeRay::Scanners::Scanner + def scan_tokens encoder, options + raise_inspect 'message', [], :initial + end + end + + def test_scanner_raise_inspect + assert_raise CodeRay::Scanners::Scanner::ScanError do + RaisingScanner.new.tokenize '' + end + end + + def test_scan_a_frozen_string + assert_nothing_raised do + CodeRay.scan RUBY_VERSION, :ruby + CodeRay.scan RUBY_VERSION, :plain + end + end + + def test_scan_a_non_string + assert_nothing_raised do + CodeRay.scan 42, :ruby + CodeRay.scan nil, :ruby + CodeRay.scan self, :ruby + CodeRay.encode ENV.to_hash, :ruby, :page + CodeRay.highlight CodeRay, :plain + end + end + +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/test/functional/examples.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/test/functional/examples.rb new file mode 100755 index 0000000..985ef87 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/test/functional/examples.rb @@ -0,0 +1,129 @@ +require 'test/unit' + +$:.unshift File.expand_path('../../../lib', __FILE__) +require 'coderay' + +class ExamplesTest < Test::Unit::TestCase + + def test_examples + # output as HTML div (using inline CSS styles) + div = CodeRay.scan('puts "Hello, world!"', :ruby).div + assert_equal <<-DIV, div +
+
puts "Hello, world!"
+
+ DIV + + # ...with line numbers + div = CodeRay.scan(<<-CODE.chomp, :ruby).div(:line_numbers => :table) +5.times do + puts 'Hello, world!' +end + CODE + assert_equal <<-DIV, div + + + +
1
+2
+3
+
5.times do
+  puts 'Hello, world!'
+end
+ DIV + + # output as standalone HTML page (using CSS classes) + page = CodeRay.scan('puts "Hello, world!"', :ruby).page + assert_match <<-PAGE, page + + + + + +
1
+
puts "Hello, world!"
+ + + PAGE + + # keep scanned tokens for later use + tokens = CodeRay.scan('{ "just": "an", "example": 42 }', :json) + assert_kind_of CodeRay::TokensProxy, tokens + + assert_equal ["{", :operator, " ", :space, :begin_group, :key, + "\"", :delimiter, "just", :content, "\"", :delimiter, + :end_group, :key, ":", :operator, " ", :space, + :begin_group, :string, "\"", :delimiter, "an", :content, + "\"", :delimiter, :end_group, :string, ",", :operator, + " ", :space, :begin_group, :key, "\"", :delimiter, + "example", :content, "\"", :delimiter, :end_group, :key, + ":", :operator, " ", :space, "42", :integer, + " ", :space, "}", :operator], tokens.tokens + + # produce a token statistic + assert_equal <<-STATISTIC, tokens.statistic + +Code Statistics + +Tokens 26 + Non-Whitespace 15 +Bytes Total 31 + +Token Types (7): + type count ratio size (average) +------------------------------------------------------------- + TOTAL 26 100.00 % 1.2 + delimiter 6 23.08 % 1.0 + operator 5 19.23 % 1.0 + space 5 19.23 % 1.0 + key 4 15.38 % 0.0 + :begin_group 3 11.54 % 0.0 + :end_group 3 11.54 % 0.0 + content 3 11.54 % 4.3 + string 2 7.69 % 0.0 + integer 1 3.85 % 2.0 + + STATISTIC + + # count the tokens + assert_equal 26, tokens.count + + # produce a HTML div, but with CSS classes + div = tokens.div(:css => :class) + assert_equal <<-DIV, div +
+
{ "just": "an", "example": 42 }
+
+ DIV + + # highlight a file (HTML div); guess the file type base on the extension + assert_equal :ruby, CodeRay::FileType[__FILE__] + + # get a new scanner for Python + python_scanner = CodeRay.scanner :python + assert_kind_of CodeRay::Scanners::Python, python_scanner + + # get a new encoder for terminal + terminal_encoder = CodeRay.encoder :term + assert_kind_of CodeRay::Encoders::Terminal, terminal_encoder + + # scanning into tokens + tokens = python_scanner.tokenize 'import this; # The Zen of Python' + assert_equal ["import", :keyword, " ", :space, "this", :include, + ";", :operator, " ", :space, "# The Zen of Python", :comment], tokens + + # format the tokens + term = terminal_encoder.encode_tokens(tokens) + assert_equal "\e[32mimport\e[0m \e[31mthis\e[0m; \e[1;30m# The Zen of Python\e[0m", term + + # re-using scanner and encoder + ruby_highlighter = CodeRay::Duo[:ruby, :div] + div = ruby_highlighter.encode('puts "Hello, world!"') + assert_equal <<-DIV, div +
+
puts "Hello, world!"
+
+ DIV + end + +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/test/functional/for_redcloth.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/test/functional/for_redcloth.rb new file mode 100644 index 0000000..9fd244e --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/test/functional/for_redcloth.rb @@ -0,0 +1,78 @@ +require 'test/unit' + +$:.unshift File.expand_path('../../../lib', __FILE__) +require 'coderay' + +begin + require 'rubygems' unless defined? Gem + gem 'RedCloth', '>= 4.0.3' rescue nil + require 'redcloth' +rescue LoadError + warn 'RedCloth not found - skipping for_redcloth tests.' + undef RedCloth if defined? RedCloth +end + +class BasicTest < Test::Unit::TestCase + + def test_for_redcloth + require 'coderay/for_redcloth' + assert_equal "

puts "Hello, World!"

", + RedCloth.new('@[ruby]puts "Hello, World!"@').to_html + assert_equal <<-BLOCKCODE.chomp, +
+
puts "Hello, World!"
+
+ BLOCKCODE + RedCloth.new('bc[ruby]. puts "Hello, World!"').to_html + end + + def test_for_redcloth_no_lang + require 'coderay/for_redcloth' + assert_equal "

puts \"Hello, World!\"

", + RedCloth.new('@puts "Hello, World!"@').to_html + assert_equal <<-BLOCKCODE.chomp, +
puts \"Hello, World!\"
+ BLOCKCODE + RedCloth.new('bc. puts "Hello, World!"').to_html + end + + def test_for_redcloth_style + require 'coderay/for_redcloth' + assert_equal <<-BLOCKCODE.chomp, +
puts \"Hello, World!\"
+ BLOCKCODE + RedCloth.new('bc{color: red}. puts "Hello, World!"').to_html + end + + def test_for_redcloth_escapes + require 'coderay/for_redcloth' + assert_equal '

>

', + RedCloth.new('@[ruby]>@').to_html + assert_equal <<-BLOCKCODE.chomp, +
+
&
+
+ BLOCKCODE + RedCloth.new('bc[ruby]. &').to_html + end + + def test_for_redcloth_escapes2 + require 'coderay/for_redcloth' + assert_equal "

#include <test.h>

", + RedCloth.new('@[c]#include @').to_html + end + + # See http://jgarber.lighthouseapp.com/projects/13054/tickets/124-code-markup-does-not-allow-brackets. + def test_for_redcloth_false_positive + require 'coderay/for_redcloth' + assert_equal '

[project]_dff.skjd

', + RedCloth.new('@[project]_dff.skjd@').to_html + # false positive, but expected behavior / known issue + assert_equal "

_dff.skjd

", + RedCloth.new('@[ruby]_dff.skjd@').to_html + assert_equal <<-BLOCKCODE.chomp, RedCloth.new('bc. [project]_dff.skjd').to_html +
[project]_dff.skjd
+ BLOCKCODE + end + +end if defined? RedCloth \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/test/functional/suite.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/test/functional/suite.rb new file mode 100755 index 0000000..ec23eec --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/coderay-1.1.1/test/functional/suite.rb @@ -0,0 +1,15 @@ +require 'test/unit' + +$VERBOSE = $CODERAY_DEBUG = true +$:.unshift File.expand_path('../../../lib', __FILE__) +require 'coderay' + +mydir = File.dirname(__FILE__) +suite = Dir[File.join(mydir, '*.rb')]. + map { |tc| File.basename(tc).sub(/\.rb$/, '') } - %w'suite for_redcloth' + +puts "Running basic CodeRay #{CodeRay::VERSION} tests: #{suite.join(', ')}" + +for test_case in suite + load File.join(mydir, test_case + '.rb') +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/.rspec b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/.rspec new file mode 100644 index 0000000..53607ea --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/.rspec @@ -0,0 +1 @@ +--colour diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/Code-of-Conduct.md b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/Code-of-Conduct.md new file mode 100644 index 0000000..d05f4bc --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/Code-of-Conduct.md @@ -0,0 +1,74 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at [INSERT EMAIL ADDRESS]. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/Contributing.md b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/Contributing.md new file mode 100644 index 0000000..3eb81ee --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/Contributing.md @@ -0,0 +1,83 @@ +## Contributing + +I value any contribution to Diff::LCS you can provide: a bug report, a feature +request, or code contributions. Code contributions to Diff::LCS are especially +welcomeencouraged. Because Diff::LCS is a complex codebase, there +are a few guidelines: + +* Code changes *will not* be accepted without tests. The test suite is + written with [RSpec][]. +* Match my coding style. +* Use a thoughtfully-named topic branch that contains your change. Rebase + your commits into logical chunks as necessary. +* Use [quality commit messages][]. +* Do not change the version number; when your patch is accepted and a release + is made, the version will be updated at that point. +* Submit a GitHub pull request with your changes. +* New or changed behaviours require appropriate documentation. + +### Test Dependencies + +Diff::LCS uses Ryan Davis’s [Hoe][] to manage the release process, and it adds +a number of rake tasks. You will mostly be interested in: + + $ rake + +which runs the tests the same way that: + + $ rake spec + $ rake travis + +will do. + +To assist with the installation of the development dependencies, I have +provided a Gemfile pointing to the (generated) `diff-lcs.gemspec` file. This +will permit you to do: + + $ bundle install + +to get the development dependencies. If you aleady have `hoe` installed, you +can accomplish the same thing with: + + $ rake newb + +This task will install any missing dependencies, run the tests/specs, and +generate the RDoc. + +You can run tests with code coverage analysis by running: + + $ rake spec:coverage + +### Workflow + +Here's the most direct way to get your work merged into the project: + +* Fork the project. +* Clone down your fork (`git clone git://github.com//diff-lcs.git`). +* Create a topic branch to contain your change (`git checkout -b + my_awesome_feature`). +* Hack away, add tests. Not necessarily in that order. +* Make sure everything still passes by running `rake`. +* If necessary, rebase your commits into logical chunks, without errors. +* Push the branch up (`git push origin my_awesome_feature`). +* Create a pull request against halostatue/diff-lcs and describe what your + change does and the why you think it should be merged. + +### Contributors + +* Austin Ziegler created Diff::LCS. + +Thanks to everyone else who has contributed to Diff::LCS: + +* Kenichi Kamiya +* Michael Granger +* Vít Ondruch +* Jon Rowe +* Koichi Ito +* Josef Strzibny +* Josh Bronson +* Mark Friedgan + +[Rspec]: http://rspec.info/documentation/ +[quality commit messages]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html +[Hoe]: https://github.com/seattlerb/hoe diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/History.md b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/History.md new file mode 100644 index 0000000..0db6448 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/History.md @@ -0,0 +1,220 @@ +## 1.3 / 2017-01-18 + +* Bugs fixed: + + * Fixed an error for bin/ldiff --version. Fixes [issue #21][]. + * Force Diff::LCS::Change and Diff::LCS::ContextChange to only perform + equality comparisons against themselves. Provided by Kevin Mook in + [pull request #29][]. + * Fix tab expansion in htmldiff, provided by Mark Friedgan in + [pull request #25][]. + * Silence Ruby 2.4 Fixnum deprecation warnings. Fixxues [issue #38][] and + [pull request#36][]. + * Ensure that test dependencies are loaded properly. Fixes [issue #33][] + and [pull request #34][]. + * Fix [issue #1][] with incorrect intuition of patch direction. Tentative + fix, but the previous failure cases pass now. + +* Tooling changes: + + * Added SimpleCov and Coveralls support. + * Change the homepage (temporarily) to the GitHub repo. + * Updated testing and gem infrastructure. + * Modernized the specs. + +* Cleaned up documentation. + +* Added a Code of Conduct. + +## 1.2.5 / 2013-11-08 + +* Bugs fixed: + + * Comparing arrays flattened them too far, especially with + Diff::LCS.sdiff. Fixed by Josh Bronson in [pull request #23][]. + +## 1.2.4 / 2013-04-20 + +* Bugs fixed: + + * A bug was introduced after 1.1.3 when pruning common sequences at the + start of comparison. Paul Kunysch (@pck) fixed this in + [pull request #18][]. Thanks! + + * The Rubinius (1.9 mode) bug in [rubinius/rubinius#2268][] has been + fixed by the Rubinius team two days after it was filed. Thanks for + fixing this so quickly! + +* Switching to Raggi's hoe-gemspec2 for gemspec generation. + +## 1.2.3 / 2013-04-11 + +* Bugs Fixed: + + * The new encoding detection for diff output generation (added in 1.2.2) + introduced a bug if the left side of the comparison was the empty set. + Originally found in [rspec/rspec-expectations#238][] and + [rspec/rspec-expectations#239][]. Jon Rowe developed a reasonable + heuristic (left side, right side, empty string literal) to avoid this + bug. + * There is a known issue with Rubinius in 1.9 mode reported in + [rubinius/rubinius#2268][] and demonstrated in the Travis CI builds. + For all other tested platforms, diff-lcs is considered stable. As soon + as a suitably small test-case can be created for the Rubinius team to + examine, this will be added to the Rubinius issue around this. + +## 1.2.2 / 2013-03-30 + +* Bugs Fixed: + + * Diff::LCS::Hunk could not properly generate a difference for comparison + sets that are not US-ASCII-compatible because of the use of literal + regular expressions and strings. Jon Rowe found this in + [rspec/rspec-expectations#219][] and provided a first pass + implementation in [pull request #15][]. I've reworked it because of + test failures in Rubinius when running in Ruby 1.9 mode. This coerces + the added values to the encoding of the old dataset (as determined by + the first piece of the old dataset). + * Adding Travis CI testing for Ruby 2.0. + +## 1.2.1 / 2013-02-09 + +* Bugs Fixed: + + * As seen in [rspec/rspec-expectations#200][], the release of + Diff::LCS 1.2 introduced an unnecessary public API change to + Diff::LCS::Hunk (see the change at + [rspec/rspec-expectations@3d6fc82c][] for details). The new method name + (and behaviour) is more correct, but I should not have renamed the + function or should have at least provided an alias. This release + restores Diff::LCS::Hunk#unshift as an alias to #merge. Note that the + old #unshift behaviour was incorrect and will not be restored. + +## 1.2.0 / 2013-01-21 + +* Minor Enhancements: + + * Added special case handling for Diff::LCS.patch so that it handles + patches that are empty or contain no changes. + * Added two new methods (#patch\_me and #unpatch\_me) to the includable + module. + +* Bugs Fixed: + + * Fixed [issue #1][] patch direction detection. + * Resolved [issue #2][] by handling `string[string.size, 1]` properly (it + returns `""` not `nil`). + * Michael Granger (ged) fixed an implementation error in + Diff::LCS::Change and added specs in [pull request #8][]. Thanks! + * Made the code auto-testable. + * Vít Ondruch (voxik) provided the latest version of the GPL2 license + file in [pull request #10][]. Thanks! + * Fixed a documentation issue with the includable versions of #patch! and + #unpatch! where they implied that they would replace the original + value. Given that Diff::LCS.patch always returns a copy, the + documentation was incorrect and has been corrected. To provide the + behaviour that was originally documented, two new methods were added to + provide this behaviour. Found by scooter-dangle in [issue #12][]. + Thanks! + +* Code Style Changes: + + * Removed trailing spaces. + * Calling class methods using `.` instead of `::`. + * Vít Ondruch (voxik) removed unnecessary shebangs in [pull request #9][]. + Thanks! + * Kenichi Kamiya (kachick) removed some warnings of an unused variable in + lucky [pull request #13][]. Thanks! + * Embarked on a major refactoring to make the files a little more + manageable and understand the code on a deeper level. + * Adding to http://travis-ci.org. + +## 1.1.3 / 2011-08-27 + +* Converted to 'hoe' for release. +* Converted tests to RSpec 2. +* Extracted the body of htmldiff into a class available from + diff/lcs/htmldiff. +* Migrated development and issue tracking to GitHub. +* Bugs fixed: + + * Eliminated the explicit use of RubyGems in both bin/htmldiff and + bin/ldiff. Resolves [issue #4][]. + * Eliminated Ruby warnings. Resolves [issue #3][]. + +## 1.1.2 / 2004-10-20 + +* Fixed a problem reported by Mauricio Fernandez in htmldiff. + +## 1.1.1 / 2004-09-25 + +* Fixed bug #891 (Set returned from patch command does not contain last equal + part). +* Fixed a problem with callback initialisation code (it assumed that all + callbacks passed as classes can be initialised; now, it rescues + NoMethodError in the event of private :new being called). +* Modified the non-initialisable callbacks to have a private #new method. +* Moved ldiff core code to Diff::LCS::Ldiff (diff/lcs/ldiff.rb). + +## 1.1.0 / - + +* Eliminated the need for Diff::LCS::Event and removed it. +* Added a contextual diff callback, Diff::LCS::ContextDiffCallback. +* Implemented patching/unpatching for standard Diff callback output formats + with both #diff and #sdiff. +* Extensive documentation changes. + +## 1.0.4 + +* Fixed a problem with bin/ldiff output, especially for unified format. + Newlines that should have been present weren't. +* Changed the .tar.gz installer to generate Windows batch files if ones do + not exist already. Removed the existing batch files as they didn't work. + +## 1.0.3 + +* Fixed a problem with #traverse\_sequences where the first difference from + the left sequence might not be appropriately captured. + +## 1.0.2 + +* Fixed an issue with ldiff not working because actions were changed from + symbols to strings. + +## 1.0.1 + +* Minor modifications to the gemspec, the README. +* Renamed the diff program to ldiff (as well as the companion batch file) so + as to not collide with the standard diff program. +* Fixed issues with RubyGems. Requires RubyGems > 0.6.1 or >= 0.6.1 with the + latest CVS version. + +## 1.0 + +* Initial release based mostly on Perl's Algorithm::Diff. + +[rubinius/rubinius#2268]: https://github.com/rubinius/rubinius/issues/2268 +[rspec/rspec-expectations#239]: https://github.com/rspec/rspec-expectations/issues/239 +[rspec/rspec-expectations#238]: https://github.com/rspec/rspec-expectations/issues/238 +[rspec/rspec-expectations#219]: https://github.com/rspec/rspec-expectations/issues/219 +[rspec/rspec-expectations@3d6fc82c]: https://github.com/rspec/rspec-expectations/commit/3d6fc82c +[rspec/rspec-expectations#200]: https://github.com/rspec/rspec-expectations/pull/200 +[pull request #36]: https://github.com/halostatue/diff-lcs/pull/36 +[pull request #34]: https://github.com/halostatue/diff-lcs/pull/34 +[pull request #29]: https://github.com/halostatue/diff-lcs/pull/29 +[pull request #25]: https://github.com/halostatue/diff-lcs/pull/25 +[pull request #23]: https://github.com/halostatue/diff-lcs/pull/23 +[pull request #18]: https://github.com/halostatue/diff-lcs/pull/18 +[pull request #15]: https://github.com/halostatue/diff-lcs/pull/15 +[pull request #13]: https://github.com/halostatue/diff-lcs/pull/13 +[pull request #10]: https://github.com/halostatue/diff-lcs/pull/10 +[pull request #9]: https://github.com/halostatue/diff-lcs/pull/9 +[pull request #8]: https://github.com/halostatue/diff-lcs/pull/8 +[issue #38]: https://github.com/halostatue/diff-lcs/issues/38 +[issue #33]: https://github.com/halostatue/diff-lcs/issues/33 +[issue #21]: https://github.com/halostatue/diff-lcs/issues/21 +[issue #12]: https://github.com/halostatue/diff-lcs/issues/12 +[issue #4]: https://github.com/halostatue/diff-lcs/issues/4 +[issue #3]: https://github.com/halostatue/diff-lcs/issues/3 +[issue #2]: https://github.com/halostatue/diff-lcs/issues/2 +[issue #1]: https://github.com/halostatue/diff-lcs/issues/1 diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/License.md b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/License.md new file mode 100644 index 0000000..63b763d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/License.md @@ -0,0 +1,39 @@ +== License + +This software is available under three licenses: the GNU GPL version 2 (or at +your option, a later version), the Perl Artistic license, or the MIT license. +Note that my preference for licensing is the MIT license, but Algorithm::Diff +was dually originally licensed with the Perl Artistic and the GNU GPL ("the +same terms as Perl itself") and given that the Ruby implementation originally +hewed pretty closely to the Perl version, I must maintain the additional +licensing terms. + +* Copyright 2004–2013 Austin Ziegler. +* Adapted from Algorithm::Diff (Perl) by Ned Konz and a Smalltalk version by + Mario I. Wolczko. + +=== MIT License + +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. + +=== Perl Artistic License (version 2) +See the file docs/artistic.txt in the main distribution. + +=== GNU GPL version 2 +See the file docs/COPYING.txt in the main distribution. diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/Manifest.txt b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/Manifest.txt new file mode 100644 index 0000000..955bec0 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/Manifest.txt @@ -0,0 +1,37 @@ +.rspec +Code-of-Conduct.md +Contributing.md +History.md +License.md +Manifest.txt +README.rdoc +Rakefile +autotest/discover.rb +bin/htmldiff +bin/ldiff +docs/COPYING.txt +docs/artistic.txt +lib/diff-lcs.rb +lib/diff/lcs.rb +lib/diff/lcs/array.rb +lib/diff/lcs/block.rb +lib/diff/lcs/callbacks.rb +lib/diff/lcs/change.rb +lib/diff/lcs/htmldiff.rb +lib/diff/lcs/hunk.rb +lib/diff/lcs/internals.rb +lib/diff/lcs/ldiff.rb +lib/diff/lcs/string.rb +spec/change_spec.rb +spec/diff_spec.rb +spec/fixtures/ds1.csv +spec/fixtures/ds2.csv +spec/hunk_spec.rb +spec/issues_spec.rb +spec/lcs_spec.rb +spec/ldiff_spec.rb +spec/patch_spec.rb +spec/sdiff_spec.rb +spec/spec_helper.rb +spec/traverse_balanced_spec.rb +spec/traverse_sequences_spec.rb diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/README.rdoc b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/README.rdoc new file mode 100644 index 0000000..7a3350a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/README.rdoc @@ -0,0 +1,84 @@ += Diff::LCS + +home :: https://github.com/halostatue/diff-lcs +code :: https://github.com/halostatue/diff-lcs +bugs :: https://github.com/halostatue/diff-lcs/issues +rdoc :: http://rubydoc.info/github/halostatue/diff-lcs +continuous integration :: {}[https://travis-ci.org/halostatue/diff-lcs] +test coverage :: {Coverage Status}[https://coveralls.io/r/halostatue/diff-lcs] + +== Description + +Diff::LCS computes the difference between two Enumerable sequences using the +McIlroy-Hunt longest common subsequence (LCS) algorithm. It includes utilities +to create a simple HTML diff output format and a standard diff-like tool. + +This is release 1.3, providing a tentative fix to a long-standing issue related +to incorrect detection of a patch direction. Also modernizes the gem +infrastructure, testing infrastructure, and provides a warning-free experience +to Ruby 2.4 users. + +== Synopsis + +Using this module is quite simple. By default, Diff::LCS does not extend +objects with the Diff::LCS interface, but will be called as if it were a +function: + + require 'diff/lcs' + + seq1 = %w(a b c e h j l m n p) + seq2 = %w(b c d e f j k l m r s t) + + lcs = Diff::LCS.LCS(seq1, seq2) + diffs = Diff::LCS.diff(seq1, seq2) + sdiff = Diff::LCS.sdiff(seq1, seq2) + seq = Diff::LCS.traverse_sequences(seq1, seq2, callback_obj) + bal = Diff::LCS.traverse_balanced(seq1, seq2, callback_obj) + seq2 == Diff::LCS.patch!(seq1, diffs) + seq1 == Diff::LCS.unpatch!(seq2, diffs) + seq2 == Diff::LCS.patch!(seq1, sdiff) + seq1 == Diff::LCS.unpatch!(seq2, sdiff) + +Objects can be extended with Diff::LCS: + + seq1.extend(Diff::LCS) + lcs = seq1.lcs(seq2) + diffs = seq1.diff(seq2) + sdiff = seq1.sdiff(seq2) + seq = seq1.traverse_sequences(seq2, callback_obj) + bal = seq1.traverse_balanced(seq2, callback_obj) + seq2 == seq1.patch!(diffs) + seq1 == seq2.unpatch!(diffs) + seq2 == seq1.patch!(sdiff) + seq1 == seq2.unpatch!(sdiff) + +By requiring 'diff/lcs/array' or 'diff/lcs/string', Array or String will be +extended for use this way. + +Note that Diff::LCS requires a sequenced enumerable container, which means that +the order of enumeration is both predictable and consistent for the same set of +data. While it is theoretically possible to generate a diff for an unordered +hash, it will only be meaningful if the enumeration of the hashes is +consistent. In general, this will mean that containers that behave like String +or Array will perform best. + +== History + +Diff::LCS is a port of Perl's Algorithm::Diff that uses the McIlroy-Hunt +longest common subsequence (LCS) algorithm to compute intelligent differences +between two sequenced enumerable containers. The implementation is based on +Mario I. Wolczko's +{Smalltalk version 1.2}[ftp://st.cs.uiuc.edu/pub/Smalltalk/MANCHESTER/manchester/4.0/diff.st] +(1993) and Ned Konz's Perl version +{Algorithm::Diff 1.15}[http://search.cpan.org/~nedkonz/Algorithm-Diff-1.15/]. +Diff::LCS#sdiff and Diff::LCS#traverse_balanced were originally written for the +Perl version by Mike Schilli. + +The algorithm is described in A Fast Algorithm for Computing Longest Common +Subsequences, CACM, vol.20, no.5, pp.350-353, May 1977, with a few minor +improvements to improve the speed. A simplified description of the algorithm, +originally written for the Perl version, was written by Mark-Jason Dominus. + +:include: Contributing.rdoc + +:include: License.rdoc diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/Rakefile b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/Rakefile new file mode 100644 index 0000000..23ca760 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/Rakefile @@ -0,0 +1,57 @@ +# -*- ruby encoding: utf-8 -*- + +require 'rubygems' +require 'rspec' +require 'hoe' + +Hoe.plugin :bundler +Hoe.plugin :doofus +Hoe.plugin :email unless ENV['CI'] or ENV['TRAVIS'] +Hoe.plugin :gemspec2 +Hoe.plugin :git +Hoe.plugin :travis + +spec = Hoe.spec 'diff-lcs' do + developer('Austin Ziegler', 'halostatue@gmail.com') + + require_ruby_version '>= 1.8' + + self.history_file = 'History.md' + self.readme_file = 'README.rdoc' + self.licenses = [ 'MIT', 'Artistic-2.0', 'GPL-2.0+' ] + + extra_dev_deps << ['hoe-doofus', '~> 1.0'] + extra_dev_deps << ['hoe-gemspec2', '~> 1.1'] + extra_dev_deps << ['hoe-git', '~> 1.6'] + extra_dev_deps << ['hoe-rubygems', '~> 1.0'] + extra_dev_deps << ['hoe-travis', '~> 1.2'] + extra_dev_deps << ['rspec', '>= 2.0', '< 4'] + extra_dev_deps << ['rake', '>= 10.0', '< 12'] + extra_dev_deps << ['rdoc', '>= 0'] +end + +unless Rake::Task.task_defined? :test + task :test => :spec + Rake::Task['travis'].prerequisites.replace(%w(spec)) +end + +if RUBY_VERSION >= '2.0' && RUBY_ENGINE == 'ruby' + namespace :spec do + task :coveralls do + if ENV['CI'] or ENV['TRAVIS'] + ENV['COVERALLS'] = 'yes' + Rake::Task['spec'].execute + else + Rake::Task['spec:coverage'].execute + end + end + + desc "Runs test coverage. Only works Ruby 2.0+ and assumes 'simplecov' is installed." + task :coverage do + ENV['COVERAGE'] = 'yes' + Rake::Task['spec'].execute + end + end + + # Rake::Task['travis'].prerequisites.replace(%w(spec:coveralls)) +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/autotest/discover.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/autotest/discover.rb new file mode 100644 index 0000000..cd6892c --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/autotest/discover.rb @@ -0,0 +1 @@ +Autotest.add_discovery { "rspec2" } diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/bin/htmldiff b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/bin/htmldiff new file mode 100755 index 0000000..1e4efe7 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/bin/htmldiff @@ -0,0 +1,32 @@ +#!ruby -w + +require 'diff/lcs' +require 'diff/lcs/htmldiff' + +begin + require 'text/format' +rescue LoadError + Diff::LCS::HTMLDiff.can_expand_tabs = false +end + +if ARGV.size < 2 or ARGV.size > 3 + $stderr.puts "usage: #{File.basename($0)} old new [output.html]" + $stderr.puts " #{File.basename($0)} old new > output.html" + exit 127 +end + +left = IO.read(ARGV[0]).split($/) +right = IO.read(ARGV[1]).split($/) + +options = { :title => "diff #{ARGV[0]} #{ARGV[1]}" } + +htmldiff = Diff::LCS::HTMLDiff.new(left, right, options) + +if ARGV[2] + File.open(ARGV[2], "w") do |f| + htmldiff.options[:output] = f + htmldiff.run + end +else + htmldiff.run +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/bin/ldiff b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/bin/ldiff new file mode 100755 index 0000000..a9b876f --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/bin/ldiff @@ -0,0 +1,6 @@ +#!ruby -w + +require 'diff/lcs' +require 'diff/lcs/ldiff' + +exit Diff::LCS::Ldiff.run(ARGV) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/docs/COPYING.txt b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/docs/COPYING.txt new file mode 100644 index 0000000..d159169 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/docs/COPYING.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/docs/artistic.txt b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/docs/artistic.txt new file mode 100644 index 0000000..c04639a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/docs/artistic.txt @@ -0,0 +1,127 @@ +The "Artistic License" + + Preamble + +The intent of this document is to state the conditions under which a +Package may be copied, such that the Copyright Holder maintains some +semblance of artistic control over the development of the package, +while giving the users of the package the right to use and distribute +the Package in a more-or-less customary fashion, plus the right to make +reasonable modifications. + +Definitions: + + "Package" refers to the collection of files distributed by the + Copyright Holder, and derivatives of that collection of files + created through textual modification. + + "Standard Version" refers to such a Package if it has not been + modified, or has been modified in accordance with the wishes + of the Copyright Holder as specified below. + + "Copyright Holder" is whoever is named in the copyright or + copyrights for the package. + + "You" is you, if you're thinking about copying or distributing + this Package. + + "Reasonable copying fee" is whatever you can justify on the + basis of media cost, duplication charges, time of people involved, + and so on. (You will not be required to justify it to the + Copyright Holder, but only to the computing community at large + as a market that must bear the fee.) + + "Freely Available" means that no fee is charged for the item + itself, though there may be fees involved in handling the item. + It also means that recipients of the item may redistribute it + under the same conditions they received it. + +1. You may make and give away verbatim copies of the source form of the +Standard Version of this Package without restriction, provided that you +duplicate all of the original copyright notices and associated disclaimers. + +2. You may apply bug fixes, portability fixes and other modifications +derived from the Public Domain or from the Copyright Holder. A Package +modified in such a way shall still be considered the Standard Version. + +3. You may otherwise modify your copy of this Package in any way, provided +that you insert a prominent notice in each changed file stating how and +when you changed that file, and provided that you do at least ONE of the +following: + + a) place your modifications in the Public Domain or otherwise make them + Freely Available, such as by posting said modifications to Usenet or + an equivalent medium, or placing the modifications on a major archive + site such as uunet.uu.net, or by allowing the Copyright Holder to include + your modifications in the Standard Version of the Package. + + b) use the modified Package only within your corporation or organization. + + c) rename any non-standard executables so the names do not conflict + with standard executables, which must also be provided, and provide + a separate manual page for each non-standard executable that clearly + documents how it differs from the Standard Version. + + d) make other distribution arrangements with the Copyright Holder. + +4. You may distribute the programs of this Package in object code or +executable form, provided that you do at least ONE of the following: + + a) distribute a Standard Version of the executables and library files, + together with instructions (in the manual page or equivalent) on where + to get the Standard Version. + + b) accompany the distribution with the machine-readable source of + the Package with your modifications. + + c) give non-standard executables non-standard names, and clearly + document the differences in manual pages (or equivalent), together + with instructions on where to get the Standard Version. + + d) make other distribution arrangements with the Copyright Holder. + +5. You may charge a reasonable copying fee for any distribution of this +Package. You may charge any fee you choose for support of this +Package. You may not charge a fee for this Package itself. However, +you may distribute this Package in aggregate with other (possibly +commercial) programs as part of a larger (possibly commercial) software +distribution provided that you do not advertise this Package as a +product of your own. You may embed this Package's interpreter within +an executable of yours (by linking); this shall be construed as a mere +form of aggregation, provided that the complete Standard Version of the +interpreter is so embedded. + +6. The scripts and library files supplied as input to or produced as +output from the programs of this Package do not automatically fall +under the copyright of this Package, but belong to whoever generated +them, and may be sold commercially, and may be aggregated with this +Package. If such scripts or library files are aggregated with this +Package via the so-called "undump" or "unexec" methods of producing a +binary executable image, then distribution of such an image shall +neither be construed as a distribution of this Package nor shall it +fall under the restrictions of Paragraphs 3 and 4, provided that you do +not represent such an executable image as a Standard Version of this +Package. + +7. C subroutines (or comparably compiled subroutines in other +languages) supplied by you and linked into this Package in order to +emulate subroutines and variables of the language defined by this +Package shall not be considered part of this Package, but are the +equivalent of input as in Paragraph 6, provided these subroutines do +not change the language in any way that would cause it to fail the +regression tests for the language. + +8. Aggregation of this Package with a commercial distribution is always +permitted provided that the use of this Package is embedded; that is, +when no overt attempt is made to make this Package's interfaces visible +to the end user of the commercial distribution. Such use shall not be +construed as a distribution of this Package. + +9. The name of the Copyright Holder may not be used to endorse or promote +products derived from this software without specific prior written permission. + +10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + The End diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/change_spec.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/change_spec.rb new file mode 100644 index 0000000..dfe385f --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/change_spec.rb @@ -0,0 +1,65 @@ +# -*- ruby encoding: utf-8 -*- + +require 'spec_helper' + +describe Diff::LCS::Change do + describe "an add" do + subject { described_class.new('+', 0, 'element') } + it { should_not be_deleting } + it { should be_adding } + it { should_not be_unchanged } + it { should_not be_changed } + it { should_not be_finished_a } + it { should_not be_finished_b } + end + + describe "a delete" do + subject { described_class.new('-', 0, 'element') } + it { should be_deleting } + it { should_not be_adding } + it { should_not be_unchanged } + it { should_not be_changed } + it { should_not be_finished_a } + it { should_not be_finished_b } + end + + describe "an unchanged" do + subject { described_class.new('=', 0, 'element') } + it { should_not be_deleting } + it { should_not be_adding } + it { should be_unchanged } + it { should_not be_changed } + it { should_not be_finished_a } + it { should_not be_finished_b } + end + + describe "a changed" do + subject { described_class.new('!', 0, 'element') } + it { should_not be_deleting } + it { should_not be_adding } + it { should_not be_unchanged } + it { should be_changed } + it { should_not be_finished_a } + it { should_not be_finished_b } + end + + describe "a finished_a" do + subject { described_class.new('>', 0, 'element') } + it { should_not be_deleting } + it { should_not be_adding } + it { should_not be_unchanged } + it { should_not be_changed } + it { should be_finished_a } + it { should_not be_finished_b } + end + + describe "a finished_b" do + subject { described_class.new('<', 0, 'element') } + it { should_not be_deleting } + it { should_not be_adding } + it { should_not be_unchanged } + it { should_not be_changed } + it { should_not be_finished_a } + it { should be_finished_b } + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/diff_spec.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/diff_spec.rb new file mode 100644 index 0000000..020ff44 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/diff_spec.rb @@ -0,0 +1,47 @@ +# -*- ruby encoding: utf-8 -*- + +require 'spec_helper' + +describe Diff::LCS, ".diff" do + include Diff::LCS::SpecHelper::Matchers + + it "correctly diffs seq1 to seq2" do + diff_s1_s2 = Diff::LCS.diff(seq1, seq2) + expect(change_diff(correct_forward_diff)).to eq(diff_s1_s2) + end + + it "correctly diffs seq2 to seq1" do + diff_s2_s1 = Diff::LCS.diff(seq2, seq1) + expect(change_diff(correct_backward_diff)).to eq(diff_s2_s1) + end + + it "correctly diffs against an empty sequence" do + diff = Diff::LCS.diff(word_sequence, []) + correct_diff = [ + [ [ '-', 0, 'abcd' ], + [ '-', 1, 'efgh' ], + [ '-', 2, 'ijkl' ], + [ '-', 3, 'mnopqrstuvwxyz' ] ] + ] + + expect(change_diff(correct_diff)).to eq(diff) + + diff = Diff::LCS.diff([], word_sequence) + correct_diff.each { |hunk| hunk.each { |change| change[0] = '+' } } + expect(change_diff(correct_diff)).to eq(diff) + end + + it "correctly diffs 'xx' and 'xaxb'" do + left = 'xx' + right = 'xaxb' + expect(Diff::LCS.patch(left, Diff::LCS.diff(left, right))).to eq(right) + end + + it "returns an empty diff with (hello, hello)" do + expect(Diff::LCS.diff(hello, hello)).to be_empty + end + + it "returns an empty diff with (hello_ary, hello_ary)" do + expect(Diff::LCS.diff(hello_ary, hello_ary)).to be_empty + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/fixtures/ds1.csv b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/fixtures/ds1.csv new file mode 100644 index 0000000..9ac8428 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/fixtures/ds1.csv @@ -0,0 +1,50 @@ +1,3 +2,7 +3,13 +4,21 +5,31 +6,43 +7,57 +8,73 +9,91 +10,111 +11,133 +12,157 +13,183 +14,211 +15,241 +16,273 +17,307 +18,343 +19,381 +20,421 +21,463 +22,507 +23,553 +24,601 +25,651 +26,703 +27,757 +28,813 +29,871 +30,931 +31,993 +32,1057 +33,1123 +34,1191 +35,1261 +36,1333 +37,1407 +38,1483 +39,1561 +40,1641 +41,1723 +42,1807 +43,1893 +44,1981 +45,2071 +46,2163 +47,2257 +48,2353 +49,2451 +50,2500 \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/fixtures/ds2.csv b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/fixtures/ds2.csv new file mode 100644 index 0000000..797de76 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/fixtures/ds2.csv @@ -0,0 +1,51 @@ + 1,3 +2,7 +3,13 +4,21 +5,31 +6,42 +7,57 +8,73 +9,91 +10,111 +11,133 +12,157 +13,183 +14,211 +15,241 +16,273 +17,307 +18,343 +19,200 +20,421 +21,463 +22,507 +23,553 +24,601 +25,651 +26,703 +27,757 +28,813 +29,871 +30,931 +31,123 +32,1057 +33,1123 +34,1000 +35,1261 +36,1333 +37,1407 +38,1483 +39,1561 +40,1641 +41,1723 +42,1807 +43,1893 +44,1981 +45,2071 +46,2163 +47,1524 +48,2353 +49,2451 +50,2500 +51,2520 diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/hunk_spec.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/hunk_spec.rb new file mode 100644 index 0000000..0711e0d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/hunk_spec.rb @@ -0,0 +1,72 @@ +# -*- ruby encoding: utf-8 -*- + +require 'spec_helper' + +if String.method_defined?(:encoding) + require 'diff/lcs/hunk' + + describe Diff::LCS::Hunk do + let(:old_data) { ["Tu avec carté {count} itém has".encode('UTF-16LE')] } + let(:new_data) { ["Tu avec carte {count} item has".encode('UTF-16LE')] } + let(:pieces) { Diff::LCS.diff old_data, new_data } + let(:hunk) { Diff::LCS::Hunk.new(old_data, new_data, pieces[0], 3, 0) } + + it 'produces a unified diff from the two pieces' do + expected = (<<-EOD.gsub(/^\s+/,'').encode('UTF-16LE').chomp) + @@ -1,2 +1,2 @@ + -Tu avec carté {count} itém has + +Tu avec carte {count} item has + EOD + + expect(hunk.diff(:unified)).to eq(expected) + end + + it 'produces a context diff from the two pieces' do + expected = (<<-EOD.gsub(/^\s+/,'').encode('UTF-16LE').chomp) + *************** + *** 1,2 **** + !Tu avec carté {count} itém has + --- 1,2 ---- + !Tu avec carte {count} item has + EOD + + expect(hunk.diff(:context)).to eq(expected) + end + + it 'produces an old diff from the two pieces' do + expected = (<<-EOD.gsub(/^ +/,'').encode('UTF-16LE').chomp) + 1,2c1,2 + < Tu avec carté {count} itém has + --- + > Tu avec carte {count} item has + + EOD + + expect(hunk.diff(:old)).to eq(expected) + end + + it 'produces a reverse ed diff from the two pieces' do + expected = (<<-EOD.gsub(/^ +/,'').encode('UTF-16LE').chomp) + c1,2 + Tu avec carte {count} item has + . + + EOD + + expect(hunk.diff(:reverse_ed)).to eq(expected) + end + + context 'with empty first data set' do + let(:old_data) { [] } + + it 'produces a unified diff' do + expected = (<<-EOD.gsub(/^\s+/,'').encode('UTF-16LE').chomp) + @@ -1 +1,2 @@ + +Tu avec carte {count} item has + EOD + + expect(hunk.diff(:unified)).to eq(expected) + end + end + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/issues_spec.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/issues_spec.rb new file mode 100644 index 0000000..7638249 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/issues_spec.rb @@ -0,0 +1,49 @@ +# -*- ruby encoding: utf-8 -*- + +require 'spec_helper' + +describe "Diff::LCS Issues" do + include Diff::LCS::SpecHelper::Matchers + + describe 'issue #1' do + shared_examples 'handles simple diffs' do |s1, s2, forward_diff| + before do + @diff_s1_s2 = Diff::LCS.diff(s1, s2) + end + + it 'creates the correct diff' do + expect(change_diff(forward_diff)).to eq(@diff_s1_s2) + end + + it 'creates the correct patch s1->s2' do + expect(Diff::LCS.patch(s1, @diff_s1_s2)).to eq(s2) + end + + it 'creates the correct patch s2->s1' do + expect(Diff::LCS.patch(s2, @diff_s1_s2)).to eq(s1) + end + end + + describe 'string' do + it_has_behavior 'handles simple diffs', 'aX', 'bXaX', [ + [ [ '+', 0, 'b' ], + [ '+', 1, 'X' ] ], + ] + it_has_behavior 'handles simple diffs', 'bXaX', 'aX', [ + [ [ '-', 0, 'b' ], + [ '-', 1, 'X' ] ], + ] + end + + describe 'array' do + it_has_behavior 'handles simple diffs', %w(a X), %w(b X a X), [ + [ [ '+', 0, 'b' ], + [ '+', 1, 'X' ] ], + ] + it_has_behavior 'handles simple diffs', %w(b X a X), %w(a X), [ + [ [ '-', 0, 'b' ], + [ '-', 1, 'X' ] ], + ] + end + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/lcs_spec.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/lcs_spec.rb new file mode 100644 index 0000000..28533e3 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/lcs_spec.rb @@ -0,0 +1,56 @@ +# -*- ruby encoding: utf-8 -*- + +require 'spec_helper' + +describe Diff::LCS::Internals, ".lcs" do + include Diff::LCS::SpecHelper::Matchers + + it "returns a meaningful LCS array with (seq1, seq2)" do + res = Diff::LCS::Internals.lcs(seq1, seq2) + # The result of the LCS (less the +nil+ values) must be as long as the + # correct result. + expect(res.compact.size).to eq(correct_lcs.size) + expect(res).to correctly_map_sequence(seq1).to_other_sequence(seq2) + + # Compact these transformations and they should be the correct LCS. + x_seq1 = (0...res.size).map { |ix| res[ix] ? seq1[ix] : nil }.compact + x_seq2 = (0...res.size).map { |ix| res[ix] ? seq2[res[ix]] : nil }.compact + + expect(x_seq1).to eq(correct_lcs) + expect(x_seq2).to eq(correct_lcs) + end + + it "returns all indexes with (hello, hello)" do + expect(Diff::LCS::Internals.lcs(hello, hello)).to \ + eq((0...hello.size).to_a) + end + + it "returns all indexes with (hello_ary, hello_ary)" do + expect(Diff::LCS::Internals.lcs(hello_ary, hello_ary)).to \ + eq((0...hello_ary.size).to_a) + end +end + +describe Diff::LCS, ".LCS" do + include Diff::LCS::SpecHelper::Matchers + + it "returns the correct compacted values from Diff::LCS.LCS" do + res = Diff::LCS.LCS(seq1, seq2) + expect(res).to eq(correct_lcs) + expect(res.compact).to eq(res) + end + + it "is transitive" do + res = Diff::LCS.LCS(seq2, seq1) + expect(res).to eq(correct_lcs) + expect(res.compact).to eq(res) + end + + it "returns %W(h e l l o) with (hello, hello)" do + expect(Diff::LCS.LCS(hello, hello)).to eq(hello.split(//)) + end + + it "returns hello_ary with (hello_ary, hello_ary)" do + expect(Diff::LCS.LCS(hello_ary, hello_ary)).to eq(hello_ary) + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/ldiff_spec.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/ldiff_spec.rb new file mode 100644 index 0000000..ad1377f --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/ldiff_spec.rb @@ -0,0 +1,47 @@ +# -*- ruby encoding: utf-8 -*- + +require 'spec_helper' + +describe "Diff::LCS.diff" do + include Diff::LCS::SpecHelper::Matchers + + it 'correctly diffs seq1 to seq2' do + diff_s1_s2 = Diff::LCS.diff(seq1, seq2) + expect(change_diff(correct_forward_diff)).to eq(diff_s1_s2) + end + + it 'correctly diffs seq2 to seq1' do + diff_s2_s1 = Diff::LCS.diff(seq2, seq1) + expect(change_diff(correct_backward_diff)).to eq(diff_s2_s1) + end + + it 'correctly diffs against an empty sequence' do + diff = Diff::LCS.diff(word_sequence, []) + correct_diff = [ + [ [ '-', 0, 'abcd' ], + [ '-', 1, 'efgh' ], + [ '-', 2, 'ijkl' ], + [ '-', 3, 'mnopqrstuvwxyz' ] ] + ] + + expect(change_diff(correct_diff)).to eq(diff) + + diff = Diff::LCS.diff([], word_sequence) + correct_diff.each { |hunk| hunk.each { |change| change[0] = '+' } } + expect(change_diff(correct_diff)).to eq(diff) + end + + it "correctly diffs 'xx' and 'xaxb'" do + left = 'xx' + right = 'xaxb' + expect(Diff::LCS.patch(left, Diff::LCS.diff(left, right))).to eq(right) + end + + it "returns an empty diff with (hello, hello)" do + expect(Diff::LCS.diff(hello, hello)).to eq([]) + end + + it "returns an empty diff with (hello_ary, hello_ary)" do + expect(Diff::LCS.diff(hello_ary, hello_ary)).to eq([]) + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/patch_spec.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/patch_spec.rb new file mode 100644 index 0000000..9f1a4f1 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/patch_spec.rb @@ -0,0 +1,422 @@ +# -*- ruby encoding: utf-8 -*- + +require 'spec_helper' + +describe "Diff::LCS.patch" do + include Diff::LCS::SpecHelper::Matchers + + shared_examples "patch sequences correctly" do + it "correctly patches left-to-right (patch autodiscovery)" do + expect(Diff::LCS.patch(s1, patch_set)).to eq(s2) + end + + it "correctly patches left-to-right (explicit patch)" do + expect(Diff::LCS.patch(s1, patch_set, :patch)).to eq(s2) + expect(Diff::LCS.patch!(s1, patch_set)).to eq(s2) + end + + it "correctly patches right-to-left (unpatch autodiscovery)" do + expect(Diff::LCS.patch(s2, patch_set)).to eq(s1) + end + + it "correctly patches right-to-left (explicit unpatch)" do + expect(Diff::LCS.patch(s2, patch_set, :unpatch)).to eq(s1) + expect(Diff::LCS.unpatch!(s2, patch_set)).to eq(s1) + end + end + + describe "using a Diff::LCS.diff patchset" do + describe "an empty patchset returns the source" do + it "works on a string (hello)" do + diff = Diff::LCS.diff(hello, hello) + expect(Diff::LCS::patch(hello, diff)).to eq(hello) + end + + it "works on an array %W(h e l l o)" do + diff = Diff::LCS.diff(hello_ary, hello_ary) + expect(Diff::LCS::patch(hello_ary, diff)).to eq(hello_ary) + end + end + + describe "with default diff callbacks (DiffCallbacks)" do + describe "forward (s1 -> s2)" do + it_has_behavior "patch sequences correctly" do + let(:s1) { seq1 } + let(:s2) { seq2 } + let(:patch_set) { Diff::LCS.diff(seq1, seq2) } + end + end + + describe "reverse (s2 -> s1)" do + it_has_behavior "patch sequences correctly" do + let(:s1) { seq2 } + let(:s2) { seq1 } + let(:patch_set) { Diff::LCS.diff(seq2, seq1) } + end + end + end + + describe "with context diff callbacks (ContextDiffCallbacks)" do + describe "forward (s1 -> s2)" do + it_has_behavior "patch sequences correctly" do + let(:s1) { seq1 } + let(:s2) { seq2 } + let(:patch_set) { + Diff::LCS.diff(seq1, seq2, Diff::LCS::ContextDiffCallbacks) + } + end + end + + describe "reverse (s2 -> s1)" do + it_has_behavior "patch sequences correctly" do + let(:s1) { seq2 } + let(:s2) { seq1 } + let(:patch_set) { + Diff::LCS.diff(seq2, seq1, Diff::LCS::ContextDiffCallbacks) + } + end + end + end + + describe "with sdiff callbacks (SDiffCallbacks)" do + describe "forward (s1 -> s2)" do + it_has_behavior "patch sequences correctly" do + let(:s1) { seq1 } + let(:s2) { seq2 } + let(:patch_set) { + Diff::LCS.diff(seq1, seq2, Diff::LCS::SDiffCallbacks) + } + end + end + + describe "reverse (s2 -> s1)" do + it_has_behavior "patch sequences correctly" do + let(:s1) { seq2 } + let(:s2) { seq1 } + let(:patch_set) { + Diff::LCS.diff(seq2, seq1, Diff::LCS::SDiffCallbacks) + } + end + end + end + end + + describe "using a Diff::LCS.sdiff patchset" do + describe "an empty patchset returns the source" do + it "works on a string (hello)" do + expect(Diff::LCS::patch(hello, Diff::LCS.sdiff(hello, hello))).to eq(hello) + end + + it "works on an array %W(h e l l o)" do + expect(Diff::LCS::patch(hello_ary, Diff::LCS.sdiff(hello_ary, hello_ary))).to eq(hello_ary) + end + end + + describe "with default diff callbacks (DiffCallbacks)" do + describe "forward (s1 -> s2)" do + it_has_behavior "patch sequences correctly" do + let(:s1) { seq1 } + let(:s2) { seq2 } + let(:patch_set) { + Diff::LCS.sdiff(seq1, seq2, Diff::LCS::DiffCallbacks) + } + end + end + + describe "reverse (s2 -> s1)" do + it_has_behavior "patch sequences correctly" do + let(:s1) { seq2 } + let(:s2) { seq1 } + let(:patch_set) { + Diff::LCS.sdiff(seq2, seq1, Diff::LCS::DiffCallbacks) + } + end + end + end + + describe "with context diff callbacks (DiffCallbacks)" do + describe "forward (s1 -> s2)" do + it_has_behavior "patch sequences correctly" do + let(:s1) { seq1 } + let(:s2) { seq2 } + let(:patch_set) { + Diff::LCS.sdiff(seq1, seq2, Diff::LCS::ContextDiffCallbacks) + } + end + end + + describe "reverse (s2 -> s1)" do + it_has_behavior "patch sequences correctly" do + let(:s1) { seq2 } + let(:s2) { seq1 } + let(:patch_set) { + Diff::LCS.sdiff(seq2, seq1, Diff::LCS::ContextDiffCallbacks) + } + end + end + end + + describe "with sdiff callbacks (SDiffCallbacks)" do + describe "forward (s1 -> s2)" do + it_has_behavior "patch sequences correctly" do + let(:s1) { seq1 } + let(:s2) { seq2 } + let(:patch_set) { Diff::LCS.sdiff(seq1, seq2) } + end + end + + describe "reverse (s2 -> s1)" do + it_has_behavior "patch sequences correctly" do + let(:s1) { seq2 } + let(:s2) { seq1 } + let(:patch_set) { Diff::LCS.sdiff(seq2, seq1) } + end + end + end + end + + # Note: because of the error in autodiscovery ("does not autodiscover s1 + # to s2 patches"), this cannot use the "patch sequences correctly" shared + # set. Once the bug in autodiscovery is fixed, this can be converted as + # above. + describe "fix bug 891: patchsets do not contain the last equal part" do + before :each do + @s1 = %w(a b c d e f g h i j k) + @s2 = %w(a b c d D e f g h i j k) + end + + describe "using Diff::LCS.diff with default diff callbacks" do + before :each do + @patch_set_s1_s2 = Diff::LCS.diff(@s1, @s2) + @patch_set_s2_s1 = Diff::LCS.diff(@s2, @s1) + end + + it "autodiscovers s1 to s2 patches" do + expect do + expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2) + end.to_not raise_error + end + + it "autodiscovers s2 to s1 patches" do + expect do + expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2) + end.to_not raise_error + end + + it "autodiscovers s2 to s1 the left-to-right patches" do + expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1) + expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1) + end + + it "correctly patches left-to-right (explicit patch)" do + expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2) + expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1) + expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2) + expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1) + end + + it "correctly patches right-to-left (explicit unpatch)" do + expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1) + expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2) + expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1) + expect(Diff::LCS.unpatch!(@s1, @patch_set_s2_s1)).to eq(@s2) + end + end + + describe "using Diff::LCS.diff with context diff callbacks" do + before :each do + @patch_set_s1_s2 = Diff::LCS.diff(@s1, @s2, + Diff::LCS::ContextDiffCallbacks) + @patch_set_s2_s1 = Diff::LCS.diff(@s2, @s1, + Diff::LCS::ContextDiffCallbacks) + end + + it "autodiscovers s1 to s2 patches" do + expect do + expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2) + end.to_not raise_error + end + + it "autodiscovers s2 to s1 patches" do + expect do + expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2) + end.to_not raise_error + end + + it "autodiscovers s2 to s1 the left-to-right patches" do + expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1) + expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1) + end + + it "correctly patches left-to-right (explicit patch)" do + expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2) + expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1) + expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2) + expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1) + end + + it "correctly patches right-to-left (explicit unpatch)" do + expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1) + expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2) + expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1) + expect(Diff::LCS.unpatch!(@s1, @patch_set_s2_s1)).to eq(@s2) + end + end + + describe "using Diff::LCS.diff with sdiff callbacks" do + before(:each) do + @patch_set_s1_s2 = Diff::LCS.diff(@s1, @s2, + Diff::LCS::SDiffCallbacks) + @patch_set_s2_s1 = Diff::LCS.diff(@s2, @s1, + Diff::LCS::SDiffCallbacks) + end + + it "autodiscovers s1 to s2 patches" do + expect do + expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2) + end.to_not raise_error + end + + it "autodiscovers s2 to s1 patches" do + expect do + expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2) + end.to_not raise_error + end + + it "autodiscovers s2 to s1 the left-to-right patches" do + expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1) + expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1) + end + + it "correctly patches left-to-right (explicit patch)" do + expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2) + expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1) + expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2) + expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1) + end + + it "correctly patches right-to-left (explicit unpatch)" do + expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1) + expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2) + expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1) + expect(Diff::LCS.unpatch!(@s1, @patch_set_s2_s1)).to eq(@s2) + end + end + + describe "using Diff::LCS.sdiff with default sdiff callbacks" do + before(:each) do + @patch_set_s1_s2 = Diff::LCS.sdiff(@s1, @s2) + @patch_set_s2_s1 = Diff::LCS.sdiff(@s2, @s1) + end + + it "autodiscovers s1 to s2 patches" do + expect do + expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2) + end.to_not raise_error + end + + it "autodiscovers s2 to s1 patches" do + expect do + expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2) + end.to_not raise_error + end + + it "autodiscovers s2 to s1 the left-to-right patches" do + expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1) + expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1) + end + + it "correctly patches left-to-right (explicit patch)" do + expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2) + expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1) + expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2) + expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1) + end + + it "correctly patches right-to-left (explicit unpatch)" do + expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1) + expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2) + expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1) + expect(Diff::LCS.unpatch!(@s1, @patch_set_s2_s1)).to eq(@s2) + end + end + + describe "using Diff::LCS.sdiff with context diff callbacks" do + before(:each) do + @patch_set_s1_s2 = Diff::LCS.sdiff(@s1, @s2, + Diff::LCS::ContextDiffCallbacks) + @patch_set_s2_s1 = Diff::LCS.sdiff(@s2, @s1, + Diff::LCS::ContextDiffCallbacks) + end + + it "autodiscovers s1 to s2 patches" do + expect do + expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2) + end.to_not raise_error + end + + it "autodiscovers s2 to s1 patches" do + expect do + expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2) + end.to_not raise_error + end + + it "autodiscovers s2 to s1 the left-to-right patches" do + expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1) + expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1) + end + + it "correctly patches left-to-right (explicit patch)" do + expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2) + expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1) + expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2) + expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1) + end + + it "correctly patches right-to-left (explicit unpatch)" do + expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1) + expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2) + expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1) + expect(Diff::LCS.unpatch!(@s1, @patch_set_s2_s1)).to eq(@s2) + end + end + + describe "using Diff::LCS.sdiff with default diff callbacks" do + before(:each) do + @patch_set_s1_s2 = Diff::LCS.sdiff(@s1, @s2, Diff::LCS::DiffCallbacks) + @patch_set_s2_s1 = Diff::LCS.sdiff(@s2, @s1, Diff::LCS::DiffCallbacks) + end + + it "autodiscovers s1 to s2 patches" do + expect do + expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2) + end.to_not raise_error + end + + it "autodiscovers s2 to s1 patches" do + expect do + expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2) + end.to_not raise_error + end + + it "autodiscovers s2 to s1 the left-to-right patches" do + expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1) + expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1) + end + + it "correctly patches left-to-right (explicit patch)" do + expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2) + expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1) + expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2) + expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1) + end + + it "correctly patches right-to-left (explicit unpatch)" do + expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1) + expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2) + expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1) + expect(Diff::LCS.unpatch!(@s1, @patch_set_s2_s1)).to eq(@s2) + end + end + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/sdiff_spec.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/sdiff_spec.rb new file mode 100644 index 0000000..d619eb4 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/sdiff_spec.rb @@ -0,0 +1,214 @@ +# -*- ruby encoding: utf-8 -*- + +require 'spec_helper' + +describe "Diff::LCS.sdiff" do + include Diff::LCS::SpecHelper::Matchers + + shared_examples "compare sequences correctly" do + it "compares s1 -> s2 correctly" do + expect(Diff::LCS.sdiff(s1, s2)).to eq(context_diff(result)) + end + + it "compares s2 -> s1 correctly" do + expect(Diff::LCS.sdiff(s2, s1)).to eq(context_diff(reverse_sdiff(result))) + end + end + + describe "using seq1 & seq2" do + let(:s1) { seq1 } + let(:s2) { seq2 } + let(:result) { correct_forward_sdiff } + + it_has_behavior "compare sequences correctly" + end + + describe "using %w(abc def yyy xxx ghi jkl) & %w(abc dxf xxx ghi jkl)" do + let(:s1) { %w(abc def yyy xxx ghi jkl) } + let(:s2) { %w(abc dxf xxx ghi jkl) } + let(:result) { + [ + [ '=', [ 0, 'abc' ], [ 0, 'abc' ] ], + [ '!', [ 1, 'def' ], [ 1, 'dxf' ] ], + [ '-', [ 2, 'yyy' ], [ 2, nil ] ], + [ '=', [ 3, 'xxx' ], [ 2, 'xxx' ] ], + [ '=', [ 4, 'ghi' ], [ 3, 'ghi' ] ], + [ '=', [ 5, 'jkl' ], [ 4, 'jkl' ] ] + ] + } + + it_has_behavior "compare sequences correctly" + end + + describe "using %w(a b c d e) & %w(a e)" do + let(:s1) { %w(a b c d e) } + let(:s2) { %w(a e) } + let(:result) { + [ + [ '=', [ 0, 'a' ], [ 0, 'a' ] ], + [ '-', [ 1, 'b' ], [ 1, nil ] ], + [ '-', [ 2, 'c' ], [ 1, nil ] ], + [ '-', [ 3, 'd' ], [ 1, nil ] ], + [ '=', [ 4, 'e' ], [ 1, 'e' ] ] + ] + } + + it_has_behavior "compare sequences correctly" + end + + describe "using %w(a e) & %w(a b c d e)" do + let(:s1) { %w(a e) } + let(:s2) { %w(a b c d e) } + let(:result) { + [ + [ '=', [ 0, 'a' ], [ 0, 'a' ] ], + [ '+', [ 1, nil ], [ 1, 'b' ] ], + [ '+', [ 1, nil ], [ 2, 'c' ] ], + [ '+', [ 1, nil ], [ 3, 'd' ] ], + [ '=', [ 1, 'e' ], [ 4, 'e' ] ] + ] + } + + it_has_behavior "compare sequences correctly" + end + + describe "using %w(v x a e) & %w(w y a b c d e)" do + let(:s1) { %w(v x a e) } + let(:s2) { %w(w y a b c d e) } + let(:result) { + [ + [ '!', [ 0, 'v' ], [ 0, 'w' ] ], + [ '!', [ 1, 'x' ], [ 1, 'y' ] ], + [ '=', [ 2, 'a' ], [ 2, 'a' ] ], + [ '+', [ 3, nil ], [ 3, 'b' ] ], + [ '+', [ 3, nil ], [ 4, 'c' ] ], + [ '+', [ 3, nil ], [ 5, 'd' ] ], + [ '=', [ 3, 'e' ], [ 6, 'e' ] ] + ] + } + + it_has_behavior "compare sequences correctly" + end + + describe "using %w(x a e) & %w(a b c d e)" do + let(:s1) { %w(x a e) } + let(:s2) { %w(a b c d e) } + let(:result) { + [ + [ '-', [ 0, 'x' ], [ 0, nil ] ], + [ '=', [ 1, 'a' ], [ 0, 'a' ] ], + [ '+', [ 2, nil ], [ 1, 'b' ] ], + [ '+', [ 2, nil ], [ 2, 'c' ] ], + [ '+', [ 2, nil ], [ 3, 'd' ] ], + [ '=', [ 2, 'e' ], [ 4, 'e' ] ] + ] + } + + it_has_behavior "compare sequences correctly" + end + + describe "using %w(a e) & %w(x a b c d e)" do + let(:s1) { %w(a e) } + let(:s2) { %w(x a b c d e) } + let(:result) { + [ + [ '+', [ 0, nil ], [ 0, 'x' ] ], + [ '=', [ 0, 'a' ], [ 1, 'a' ] ], + [ '+', [ 1, nil ], [ 2, 'b' ] ], + [ '+', [ 1, nil ], [ 3, 'c' ] ], + [ '+', [ 1, nil ], [ 4, 'd' ] ], + [ '=', [ 1, 'e' ], [ 5, 'e' ] ] + ] + } + + it_has_behavior "compare sequences correctly" + end + + describe "using %w(a e v) & %w(x a b c d e w x)" do + let(:s1) { %w(a e v) } + let(:s2) { %w(x a b c d e w x) } + let(:result) { + [ + [ '+', [ 0, nil ], [ 0, 'x' ] ], + [ '=', [ 0, 'a' ], [ 1, 'a' ] ], + [ '+', [ 1, nil ], [ 2, 'b' ] ], + [ '+', [ 1, nil ], [ 3, 'c' ] ], + [ '+', [ 1, nil ], [ 4, 'd' ] ], + [ '=', [ 1, 'e' ], [ 5, 'e' ] ], + [ '!', [ 2, 'v' ], [ 6, 'w' ] ], + [ '+', [ 3, nil ], [ 7, 'x' ] ] + ] + } + + it_has_behavior "compare sequences correctly" + end + + describe "using %w() & %w(a b c)" do + let(:s1) { %w() } + let(:s2) { %w(a b c) } + let(:result) { + [ + [ '+', [ 0, nil ], [ 0, 'a' ] ], + [ '+', [ 0, nil ], [ 1, 'b' ] ], + [ '+', [ 0, nil ], [ 2, 'c' ] ] + ] + } + + it_has_behavior "compare sequences correctly" + end + + describe "using %w(a b c) & %w(1)" do + let(:s1) { %w(a b c) } + let(:s2) { %w(1) } + let(:result) { + [ + [ '!', [ 0, 'a' ], [ 0, '1' ] ], + [ '-', [ 1, 'b' ], [ 1, nil ] ], + [ '-', [ 2, 'c' ], [ 1, nil ] ] + ] + } + + it_has_behavior "compare sequences correctly" + end + + describe "using %w(a b c) & %w(c)" do + let(:s1) { %w(a b c) } + let(:s2) { %w(c) } + let(:result) { + [ + [ '-', [ 0, 'a' ], [ 0, nil ] ], + [ '-', [ 1, 'b' ], [ 0, nil ] ], + [ '=', [ 2, 'c' ], [ 0, 'c' ] ] + ] + } + + it_has_behavior "compare sequences correctly" + end + + describe "using %w(abcd efgh ijkl mnop) & []" do + let(:s1) { %w(abcd efgh ijkl mnop) } + let(:s2) { [] } + let(:result) { + [ + [ '-', [ 0, 'abcd' ], [ 0, nil ] ], + [ '-', [ 1, 'efgh' ], [ 0, nil ] ], + [ '-', [ 2, 'ijkl' ], [ 0, nil ] ], + [ '-', [ 3, 'mnop' ], [ 0, nil ] ] + ] + } + + it_has_behavior "compare sequences correctly" + end + + describe "using [[1,2]] & []" do + let(:s1) { [ [ 1, 2 ] ] } + let(:s2) { [] } + let(:result) { + [ + [ '-', [ 0, [ 1, 2 ] ], [ 0, nil ] ] + ] + } + + it_has_behavior "compare sequences correctly" + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/spec_helper.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/spec_helper.rb new file mode 100644 index 0000000..27298c4 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/spec_helper.rb @@ -0,0 +1,321 @@ +# -*- ruby encoding: utf-8 -*- + +require 'rubygems' +require 'pathname' +require 'psych' + +if ENV['COVERALLS'] + require 'coveralls' + Coveralls.wear! +elsif ENV['COVERAGE'] + require 'simplecov' + + def require_do(resource, &block) + require resource + block.call + rescue LoadError + nil + end + + formatters = [ SimpleCov::Formatter::HTMLFormatter ] + + require_do('simplecov-rcov') { + formatters << SimpleCov::Formatter::RcovFormatter + } + require_do('simplecov-vim/formatter') { + formatters << SimpleCov::Formatter::VimFormatter + } + require_do('simplecov-sublime-ruby-coverage') { + formatters << SimpleCov::Formatter::SublimeRubyCoverageFormatter + } + + SimpleCov.start do + formatter SimpleCov::Formatter::MultiFormatter[*formatters] + end +end + +file = Pathname.new(__FILE__).expand_path +path = file.parent +parent = path.parent + +$:.unshift parent.join('lib') + +require 'diff-lcs' + +module Diff::LCS::SpecHelper + def hello + "hello" + end + + def hello_ary + %W(h e l l o) + end + + def seq1 + %w(a b c e h j l m n p) + end + + def skipped_seq1 + %w(a h n p) + end + + def seq2 + %w(b c d e f j k l m r s t) + end + + def skipped_seq2 + %w(d f k r s t) + end + + def word_sequence + %w(abcd efgh ijkl mnopqrstuvwxyz) + end + + def correct_lcs + %w(b c e j l m) + end + + def correct_forward_diff + [ + [ [ '-', 0, 'a' ] ], + [ [ '+', 2, 'd' ] ], + [ [ '-', 4, 'h' ], + [ '+', 4, 'f' ] ], + [ [ '+', 6, 'k' ] ], + [ [ '-', 8, 'n' ], + [ '-', 9, 'p' ], + [ '+', 9, 'r' ], + [ '+', 10, 's' ], + [ '+', 11, 't' ] ] + ] + end + + def correct_backward_diff + [ + [ [ '+', 0, 'a' ] ], + [ [ '-', 2, 'd' ] ], + [ [ '-', 4, 'f' ], + [ '+', 4, 'h' ] ], + [ [ '-', 6, 'k' ] ], + [ + [ '-', 9, 'r' ], + [ '-', 10, 's' ], + [ '+', 8, 'n' ], + [ '-', 11, 't' ], + [ '+', 9, 'p' ] ] + ] + end + + def correct_forward_sdiff + [ + [ '-', [ 0, 'a' ], [ 0, nil ] ], + [ '=', [ 1, 'b' ], [ 0, 'b' ] ], + [ '=', [ 2, 'c' ], [ 1, 'c' ] ], + [ '+', [ 3, nil ], [ 2, 'd' ] ], + [ '=', [ 3, 'e' ], [ 3, 'e' ] ], + [ '!', [ 4, 'h' ], [ 4, 'f' ] ], + [ '=', [ 5, 'j' ], [ 5, 'j' ] ], + [ '+', [ 6, nil ], [ 6, 'k' ] ], + [ '=', [ 6, 'l' ], [ 7, 'l' ] ], + [ '=', [ 7, 'm' ], [ 8, 'm' ] ], + [ '!', [ 8, 'n' ], [ 9, 'r' ] ], + [ '!', [ 9, 'p' ], [ 10, 's' ] ], + [ '+', [ 10, nil ], [ 11, 't' ] ] + ] + end + + def reverse_sdiff(forward_sdiff) + forward_sdiff.map { |line| + line[1], line[2] = line[2], line[1] + case line[0] + when '-' then line[0] = '+' + when '+' then line[0] = '-' + end + line + } + end + + def change_diff(diff) + map_diffs(diff, Diff::LCS::Change) + end + + def context_diff(diff) + map_diffs(diff, Diff::LCS::ContextChange) + end + + def format_diffs(diffs) + diffs.map do |e| + if e.kind_of?(Array) + e.map { |f| f.to_a.join }.join(", ") + else + e.to_a.join + end + end.join("\n") + end + + def map_diffs(diffs, klass = Diff::LCS::ContextChange) + diffs.map do |chunks| + if klass == Diff::LCS::ContextChange + klass.from_a(chunks) + else + chunks.map { |changes| klass.from_a(changes) } + end + end + end + + def balanced_traversal(s1, s2, callback_type) + callback = __send__(callback_type) + Diff::LCS.traverse_balanced(s1, s2, callback) + callback + end + + def balanced_reverse(change_result) + new_result = [] + change_result.each { |line| + line = [ line[0], line[2], line[1] ] + case line[0] + when '<' + line[0] = '>' + when '>' + line[0] = '<' + end + new_result << line + } + new_result.sort_by { |line| [ line[1], line[2] ] } + end + + def map_to_no_change(change_result) + new_result = [] + change_result.each { |line| + case line[0] + when '!' + new_result << [ '<', line[1], line[2] ] + new_result << [ '>', line[1] + 1, line[2] ] + else + new_result << line + end + } + new_result + end + + def simple_callback + callbacks = Object.new + class << callbacks + attr_reader :matched_a + attr_reader :matched_b + attr_reader :discards_a + attr_reader :discards_b + attr_reader :done_a + attr_reader :done_b + + def reset + @matched_a = [] + @matched_b = [] + @discards_a = [] + @discards_b = [] + @done_a = [] + @done_b = [] + end + + def match(event) + @matched_a << event.old_element + @matched_b << event.new_element + end + + def discard_b(event) + @discards_b << event.new_element + end + + def discard_a(event) + @discards_a << event.old_element + end + + def finished_a(event) + @done_a << [event.old_element, event.old_position, + event.new_element, event.new_position] + end + + def finished_b(event) + p "called #finished_b" + @done_b << [event.old_element, event.old_position, + event.new_element, event.new_position] + end + end + callbacks.reset + callbacks + end + + def simple_callback_no_finishers + simple = simple_callback + class << simple + undef :finished_a + undef :finished_b + end + simple + end + + def balanced_callback + cb = Object.new + class << cb + attr_reader :result + + def reset + @result = [] + end + + def match(event) + @result << [ "=", event.old_position, event.new_position ] + end + + def discard_a(event) + @result << [ "<", event.old_position, event.new_position ] + end + + def discard_b(event) + @result << [ ">", event.old_position, event.new_position ] + end + + def change(event) + @result << [ "!", event.old_position, event.new_position ] + end + end + cb.reset + cb + end + + def balanced_callback_no_change + balanced = balanced_callback + class << balanced + undef :change + end + balanced + end + + module Matchers + extend RSpec::Matchers::DSL + + matcher :be_nil_or_match_values do |ii, s1, s2| + match do |ee| + expect(ee).to(satisfy { |vee| vee.nil? || s1[ii] == s2[ee] }) + end + end + + matcher :correctly_map_sequence do |s1| + match do |actual| + actual.each_with_index { |ee, ii| + expect(ee).to be_nil_or_match_values(ii, s1, @s2) + } + end + + chain :to_other_sequence do |s2| + @s2 = s2 + end + end + end +end + +RSpec.configure do |conf| + conf.include Diff::LCS::SpecHelper + conf.alias_it_should_behave_like_to :it_has_behavior, 'has behavior:' + conf.filter_run_excluding :broken => true +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/traverse_balanced_spec.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/traverse_balanced_spec.rb new file mode 100644 index 0000000..95e60ec --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/traverse_balanced_spec.rb @@ -0,0 +1,310 @@ +# -*- ruby encoding: utf-8 -*- + +require 'spec_helper' + +describe "Diff::LCS.traverse_balanced" do + include Diff::LCS::SpecHelper::Matchers + + shared_examples "with a #change callback" do |s1, s2, result| + it "traverses s1 -> s2 correctly" do + traversal = balanced_traversal(s1, s2, :balanced_callback) + expect(traversal.result).to eq(result) + end + + it "traverses s2 -> s1 correctly" do + traversal = balanced_traversal(s2, s1, :balanced_callback) + expect(traversal.result).to eq(balanced_reverse(result)) + end + end + + shared_examples "without a #change callback" do |s1, s2, result| + it "traverses s1 -> s2 correctly" do + traversal = balanced_traversal(s1, s2, :balanced_callback_no_change) + expect(traversal.result).to eq(map_to_no_change(result)) + end + + it "traverses s2 -> s1 correctly" do + traversal = balanced_traversal(s2, s1, :balanced_callback_no_change) + expect(traversal.result).to eq(map_to_no_change(balanced_reverse(result))) + end + end + + describe "identical string sequences ('abc')" do + s1 = s2 = "abc" + + result = [ + [ '=', 0, 0 ], + [ '=', 1, 1 ], + [ '=', 2, 2 ] + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end + + describe "identical array sequences %w(a b c)" do + s1 = s2 = %w(a b c) + + result = [ + [ '=', 0, 0 ], + [ '=', 1, 1 ], + [ '=', 2, 2 ] + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end + + describe "sequences %w(a b c) & %w(a x c)" do + s1 = %w(a b c) + s2 = %w(a x c) + + result = [ + [ '=', 0, 0 ], + [ '!', 1, 1 ], + [ '=', 2, 2 ] + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end + + describe "sequences %w(a x y c) & %w(a v w c)" do + s1 = %w(a x y c) + s2 = %w(a v w c) + + result = [ + [ '=', 0, 0 ], + [ '!', 1, 1 ], + [ '!', 2, 2 ], + [ '=', 3, 3 ] + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end + + describe "sequences %w(x y c) & %w(v w c)" do + s1 = %w(x y c) + s2 = %w(v w c) + result = [ + [ '!', 0, 0 ], + [ '!', 1, 1 ], + [ '=', 2, 2 ] + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end + + describe "sequences %w(a x y z) & %w(b v w)" do + s1 = %w(a x y z) + s2 = %w(b v w) + result = [ + [ '!', 0, 0 ], + [ '!', 1, 1 ], + [ '!', 2, 2 ], + [ '<', 3, 3 ] + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end + + describe "sequences %w(a z) & %w(a)" do + s1 = %w(a z) + s2 = %w(a) + result = [ + [ '=', 0, 0 ], + [ '<', 1, 1 ] + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end + + describe "sequences %w(z a) & %w(a)" do + s1 = %w(z a) + s2 = %w(a) + result = [ + [ '<', 0, 0 ], + [ '=', 1, 0 ] + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end + + describe "sequences %w(a b c) & %w(x y z)" do + s1 = %w(a b c) + s2 = %w(x y z) + result = [ + [ '!', 0, 0 ], + [ '!', 1, 1 ], + [ '!', 2, 2 ] + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end + + describe "sequences %w(abcd efgh ijkl mnoopqrstuvwxyz) & []" do + s1 = %w(abcd efgh ijkl mnopqrstuvwxyz) + s2 = [] + result = [ + [ '<', 0, 0 ], + [ '<', 1, 0 ], + [ '<', 2, 0 ], + [ '<', 3, 0 ] + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end + + describe "strings %Q(a b c) & %Q(a x c)" do + s1 = %Q(a b c) + s2 = %Q(a x c) + + result = [ + [ '=', 0, 0 ], + [ '=', 1, 1 ], + [ '!', 2, 2 ], + [ '=', 3, 3 ], + [ '=', 4, 4 ] + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end + + describe "strings %Q(a x y c) & %Q(a v w c)" do + s1 = %Q(a x y c) + s2 = %Q(a v w c) + + result = [ + [ '=', 0, 0 ], + [ '=', 1, 1 ], + [ '!', 2, 2 ], + [ '=', 3, 3 ], + [ '!', 4, 4 ], + [ '=', 5, 5 ], + [ '=', 6, 6 ] + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end + + describe "strings %Q(x y c) & %Q(v w c)" do + s1 = %Q(x y c) + s2 = %Q(v w c) + result = [ + [ '!', 0, 0 ], + [ '=', 1, 1 ], + [ '!', 2, 2 ], + [ '=', 3, 3 ], + [ '=', 4, 4 ] + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end + + describe "strings %Q(a x y z) & %Q(b v w)" do + s1 = %Q(a x y z) + s2 = %Q(b v w) + result = [ + [ '!', 0, 0 ], + [ '=', 1, 1 ], + [ '!', 2, 2 ], + [ '=', 3, 3 ], + [ '!', 4, 4 ], + [ '<', 5, 5 ], + [ '<', 6, 5 ] + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end + + describe "strings %Q(a z) & %Q(a)" do + s1 = %Q(a z) + s2 = %Q(a) + result = [ + [ '=', 0, 0 ], + [ '<', 1, 1 ], + [ '<', 2, 1 ] + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end + + describe "strings %Q(z a) & %Q(a)" do + s1 = %Q(z a) + s2 = %Q(a) + result = [ + [ '<', 0, 0 ], + [ '<', 1, 0 ], + [ '=', 2, 0 ] + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end + + describe "strings %Q(a b c) & %Q(x y z)" do + s1 = %Q(a b c) + s2 = %Q(x y z) + result = [ + [ '!', 0, 0 ], + [ '=', 1, 1 ], + [ '!', 2, 2 ], + [ '=', 3, 3 ], + [ '!', 4, 4 ] + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end + + describe "strings %Q(abcd efgh ijkl mnopqrstuvwxyz) & %Q()" do + s1 = %Q(abcd efgh ijkl mnopqrstuvwxyz) + s2 = "" + result = [ + [ '<', 0, 0 ], + [ '<', 1, 0 ], + [ '<', 2, 0 ], + [ '<', 3, 0 ], + [ '<', 4, 0 ], + [ '<', 5, 0 ], + [ '<', 6, 0 ], + [ '<', 7, 0 ], + [ '<', 8, 0 ], + [ '<', 9, 0 ], + [ '<', 10, 0 ], + [ '<', 11, 0 ], + [ '<', 12, 0 ], + [ '<', 13, 0 ], + [ '<', 14, 0 ], + [ '<', 15, 0 ], + [ '<', 16, 0 ], + [ '<', 17, 0 ], + [ '<', 18, 0 ], + [ '<', 19, 0 ], + [ '<', 20, 0 ], + [ '<', 21, 0 ], + [ '<', 22, 0 ], + [ '<', 23, 0 ], + [ '<', 24, 0 ], + [ '<', 25, 0 ], + [ '<', 26, 0 ], + [ '<', 27, 0 ], + [ '<', 28, 0 ], + ] + + it_has_behavior "with a #change callback", s1, s2, result + it_has_behavior "without a #change callback", s1, s2, result + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/traverse_sequences_spec.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/traverse_sequences_spec.rb new file mode 100644 index 0000000..1252d53 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/diff-lcs-1.3/spec/traverse_sequences_spec.rb @@ -0,0 +1,139 @@ +# -*- ruby encoding: utf-8 -*- + +require 'spec_helper' + +describe "Diff::LCS.traverse_sequences" do + describe "callback with no finishers" do + describe "over (seq1, seq2)" do + before(:each) do + @callback_s1_s2 = simple_callback_no_finishers + Diff::LCS.traverse_sequences(seq1, seq2, @callback_s1_s2) + + @callback_s2_s1 = simple_callback_no_finishers + Diff::LCS.traverse_sequences(seq2, seq1, @callback_s2_s1) + end + + it "has the correct LCS result on left-matches" do + expect(@callback_s1_s2.matched_a).to eq(correct_lcs) + expect(@callback_s2_s1.matched_a).to eq(correct_lcs) + end + + it "has the correct LCS result on right-matches" do + expect(@callback_s1_s2.matched_b).to eq(correct_lcs) + expect(@callback_s2_s1.matched_b).to eq(correct_lcs) + end + + it "has the correct skipped sequences with the left sequence" do + expect(@callback_s1_s2.discards_a).to eq(skipped_seq1) + expect(@callback_s2_s1.discards_a).to eq(skipped_seq2) + end + + it "has the correct skipped sequences with the right sequence" do + expect(@callback_s1_s2.discards_b).to eq(skipped_seq2) + expect(@callback_s2_s1.discards_b).to eq(skipped_seq1) + end + + it "does not have anything done markers from the left or right sequences" do + expect(@callback_s1_s2.done_a).to be_empty + expect(@callback_s1_s2.done_b).to be_empty + expect(@callback_s2_s1.done_a).to be_empty + expect(@callback_s2_s1.done_b).to be_empty + end + end + + describe "over (hello, hello)" do + before(:each) do + @callback = simple_callback_no_finishers + Diff::LCS.traverse_sequences(hello, hello, @callback) + end + + it "has the correct LCS result on left-matches" do + expect(@callback.matched_a).to eq(hello.split(//)) + end + + it "has the correct LCS result on right-matches" do + expect(@callback.matched_b).to eq(hello.split(//)) + end + + it "has the correct skipped sequences with the left sequence", :only => true do + expect(@callback.discards_a).to be_empty + end + + it "has the correct skipped sequences with the right sequence" do + expect(@callback.discards_b).to be_empty + end + + it "does not have anything done markers from the left or right sequences" do + expect(@callback.done_a).to be_empty + expect(@callback.done_b).to be_empty + end + end + + describe "over (hello_ary, hello_ary)" do + before(:each) do + @callback = simple_callback_no_finishers + Diff::LCS.traverse_sequences(hello_ary, hello_ary, @callback) + end + + it "has the correct LCS result on left-matches" do + expect(@callback.matched_a).to eq(hello_ary) + end + + it "has the correct LCS result on right-matches" do + expect(@callback.matched_b).to eq(hello_ary) + end + + it "has the correct skipped sequences with the left sequence" do + expect(@callback.discards_a).to be_empty + end + + it "has the correct skipped sequences with the right sequence" do + expect(@callback.discards_b).to be_empty + end + + it "does not have anything done markers from the left or right sequences" do + expect(@callback.done_a).to be_empty + expect(@callback.done_b).to be_empty + end + end + end + + describe "callback with finisher" do + before(:each) do + @callback_s1_s2 = simple_callback + Diff::LCS.traverse_sequences(seq1, seq2, @callback_s1_s2) + @callback_s2_s1 = simple_callback + Diff::LCS.traverse_sequences(seq2, seq1, @callback_s2_s1) + end + + it "has the correct LCS result on left-matches" do + expect(@callback_s1_s2.matched_a).to eq(correct_lcs) + expect(@callback_s2_s1.matched_a).to eq(correct_lcs) + end + + it "has the correct LCS result on right-matches" do + expect(@callback_s1_s2.matched_b).to eq(correct_lcs) + expect(@callback_s2_s1.matched_b).to eq(correct_lcs) + end + + it "has the correct skipped sequences for the left sequence" do + expect(@callback_s1_s2.discards_a).to eq(skipped_seq1) + expect(@callback_s2_s1.discards_a).to eq(skipped_seq2) + end + + it "has the correct skipped sequences for the right sequence" do + expect(@callback_s1_s2.discards_b).to eq(skipped_seq2) + expect(@callback_s2_s1.discards_b).to eq(skipped_seq1) + end + + it "has done markers differently-sized sequences" do + expect(@callback_s1_s2.done_a).to eq([[ "p", 9, "s", 10 ]]) + expect(@callback_s1_s2.done_b).to be_empty + + # 20110731 I don't yet understand why this particular behaviour + # isn't transitive. + expect(@callback_s2_s1.done_a).to be_empty + expect(@callback_s2_s1.done_b).to be_empty + end + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/.document b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/.document new file mode 100644 index 0000000..3d618dd --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/.document @@ -0,0 +1,5 @@ +lib/**/*.rb +bin/* +- +features/**/*.feature +LICENSE.txt diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/.gitignore b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/.gitignore new file mode 100644 index 0000000..d87d4be --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/.gitignore @@ -0,0 +1,17 @@ +*.gem +*.rbc +.bundle +.config +.yardoc +Gemfile.lock +InstalledFiles +_yardoc +coverage +doc/ +lib/bundler/man +pkg +rdoc +spec/reports +test/tmp +test/version_tmp +tmp diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/.travis.yml b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/.travis.yml new file mode 100644 index 0000000..e120c4c --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/.travis.yml @@ -0,0 +1,21 @@ +language: ruby +rvm: + - 1.8.7 + - ree + - 1.9.3 + - 2.0.0 + - 2.1.9 + - 2.2.5 + - 2.3.1 + - ruby-head + - jruby-1.7.20 + - jruby-9.0.5.0 + - jruby-head + - rbx-2 +matrix: + allow_failures: + - rvm: ruby-head + - rvm: jruby-head + - rvm: rbx-2 +before_install: + - gem update bundler diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/CHANGELOG.md b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/CHANGELOG.md new file mode 100644 index 0000000..640bca8 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/CHANGELOG.md @@ -0,0 +1,209 @@ +# Change Log + +## [v0.5.20170404](https://github.com/knu/ruby-domain_name/tree/v0.5.20170404) (2017-04-04) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.20170223...v0.5.20170404) + +- Update the eTLD database to 2017-04-04T20:20:25Z + +## [v0.5.20170223](https://github.com/knu/ruby-domain_name/tree/v0.5.20170223) (2017-02-23) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.20161129...v0.5.20170223) + +- Update the eTLD database to 2017-02-23T00:52:11Z + +## [v0.5.20161129](https://github.com/knu/ruby-domain_name/tree/v0.5.20161129) (2016-11-29) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.20160826...v0.5.20161129) + +- Update the eTLD database to 2016-11-29T01:22:03Z + +## [v0.5.20161021](https://github.com/knu/ruby-domain_name/tree/v0.5.20161021) (2016-10-27) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.20160826...v0.5.20161021) + +- Update the eTLD database to 2016-10-21T20:52:10Z + +## [v0.5.20160826](https://github.com/knu/ruby-domain_name/tree/v0.5.20160826) (2016-09-01) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.20160615...v0.5.20160826) + +- Update the license for the eTLD database +- Update the eTLD database to 2016-08-26T16:52:03Z + +## [v0.5.20160615](https://github.com/knu/ruby-domain_name/tree/v0.5.20160615) (2016-06-16) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.20160310...v0.5.20160615) + +- Always set `@domain` to avoid a warning when `$VERBOSE` is on +- Update the eTLD database to 2016-06-15T16:22:11Z + +## [v0.5.20160310](https://github.com/knu/ruby-domain_name/tree/v0.5.20160310) (2016-03-17) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.20160309...v0.5.20160310) + +- Update development dependencies for obsolete rubies +- Update the eTLD database to 2016-03-10T21:22:02Z + +## [v0.5.20160309](https://github.com/knu/ruby-domain_name/tree/v0.5.20160309) (2016-03-09) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.20160216...v0.5.20160309) + +- Fix support for Ruby 1.8 +- Update the eTLD database to 2016-03-09T09:52:02Z + +## [v0.5.20160216](https://github.com/knu/ruby-domain_name/tree/v0.5.20160216) (2016-02-24) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.20160128...v0.5.20160216) + +- Update the eTLD database to 2016-02-16T19:22:02Z + +## [v0.5.20160128](https://github.com/knu/ruby-domain_name/tree/v0.5.20160128) (2016-01-29) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.25...v0.5.20160128) + +- Use the date as part of VERSION +- Update the eTLD database to 2016-01-28T23:22:02Z + +## [v0.5.25](https://github.com/knu/ruby-domain_name/tree/v0.5.25) (2015-10-06) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.24...v0.5.25) + +- Restrict i18n < 0.7.0 on ruby 1.8. +- Update the eTLD database to 2015-09-29T17:22:03Z + +## [v0.5.24](https://github.com/knu/ruby-domain_name/tree/v0.5.24) (2015-04-16) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.23...v0.5.24) + +- Update the eTLD database to 2015-04-07T20:26:05Z + +## [v0.5.23](https://github.com/knu/ruby-domain_name/tree/v0.5.23) (2014-12-19) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.22...v0.5.23) + +- Update the eTLD database to 2014-12-18T02:26:03Z + +## [v0.5.22](https://github.com/knu/ruby-domain_name/tree/v0.5.22) (2014-10-28) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.21...v0.5.22) + +- Update the eTLD database to 2014-10-27T15:26:07Z + +## [v0.5.21](https://github.com/knu/ruby-domain_name/tree/v0.5.21) (2014-09-09) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.20...v0.5.21) + +- Update the eTLD database to 2014-09-05T01:56:10Z + +## [v0.5.20](https://github.com/knu/ruby-domain_name/tree/v0.5.20) (2014-08-18) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.19...v0.5.20) + +- Update the eTLD database to 2014-08-14T00:56:09Z + +## [v0.5.19](https://github.com/knu/ruby-domain_name/tree/v0.5.19) (2014-06-12) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.18...v0.5.19) + +- Update the eTLD database to 2014-06-11T15:26:13Z + +## [v0.5.18](https://github.com/knu/ruby-domain_name/tree/v0.5.18) (2014-03-27) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.17...v0.5.18) + +- Update the eTLD database to 2014-03-27T03:00:59Z + +## [v0.5.17](https://github.com/knu/ruby-domain_name/tree/v0.5.17) (2014-03-21) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.16...v0.5.17) + +- Update the eTLD database to 2014-03-20T15:01:09Z + +## [v0.5.16](https://github.com/knu/ruby-domain_name/tree/v0.5.16) (2014-02-12) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.15...v0.5.16) + +- Update the eTLD database to 2014-02-11T16:01:07Z + +## [v0.5.15](https://github.com/knu/ruby-domain_name/tree/v0.5.15) (2013-11-15) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.14...v0.5.15) + +- Update the eTLD database to 2013-11-15T16:01:28Z +- Merge IDN tests from mozilla-central/netwerk/test/unit/data/test_psl.txt + +## [v0.5.14](https://github.com/knu/ruby-domain_name/tree/v0.5.14) (2013-10-16) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.13...v0.5.14) + +- Update the eTLD database to 2013-10-16T07:01:24Z + +## [v0.5.13](https://github.com/knu/ruby-domain_name/tree/v0.5.13) (2013-08-18) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.12...v0.5.13) + +- Update the eTLD database to 2013-08-15T11:01:26Z +- Adjust dependencies for Ruby 1.8 + +## [v0.5.12](https://github.com/knu/ruby-domain_name/tree/v0.5.12) (2013-06-07) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.11...v0.5.12) + +- Update the eTLD database to 2013-06-06T23:00:56Z +- Add *_idn methods that do ToUnicode conversion + +## [v0.5.11](https://github.com/knu/ruby-domain_name/tree/v0.5.11) (2013-04-12) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.10...v0.5.11) + +- Add DomainName#superdomain +- Update the database to 2013-04-05T23:00:49Z + +## [v0.5.10](https://github.com/knu/ruby-domain_name/tree/v0.5.10) (2013-04-01) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.9...v0.5.10) + +- Update the eTLD database to that of 2013-03-31T03:02:39Z + +## [v0.5.9](https://github.com/knu/ruby-domain_name/tree/v0.5.9) (2013-03-17) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.8...v0.5.9) + +- Support unf 0.1.0 + +## [v0.5.8](https://github.com/knu/ruby-domain_name/tree/v0.5.8) (2013-03-14) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.7...v0.5.8) + +- Update the eTLD database to the version as of 2013-02-18T20:02:07Z + +## [v0.5.7](https://github.com/knu/ruby-domain_name/tree/v0.5.7) (2013-01-07) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.6...v0.5.7) + +- Update the eTLD list + +## [v0.5.6](https://github.com/knu/ruby-domain_name/tree/v0.5.6) (2012-12-06) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.5...v0.5.6) + +- Update the eTLD list + +## [v0.5.5](https://github.com/knu/ruby-domain_name/tree/v0.5.5) (2012-12-06) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.4...v0.5.5) + +- Add an optional host_only flag to DomainName#cookie_domain? +- Migrate from jeweler to bundle gem + +## [v0.5.4](https://github.com/knu/ruby-domain_name/tree/v0.5.4) (2012-09-18) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.3...v0.5.4) + +- Update the eTLD list +- Import updated test cases suggested by Mozilla developers + +## [v0.5.3](https://github.com/knu/ruby-domain_name/tree/v0.5.3) (2012-04-06) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.2...v0.5.3) + +- Implement Punycode decoder + +**Closed issues:** + +- Running DomainName multi-threaded leads to Stack Errors [\#2](https://github.com/knu/ruby-domain_name/issues/2) + +## [v0.5.2](https://github.com/knu/ruby-domain_name/tree/v0.5.2) (2012-01-18) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.1...v0.5.2) + +- Update the eTLD list + +## [v0.5.1](https://github.com/knu/ruby-domain_name/tree/v0.5.1) (2011-11-09) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.5.0...v0.5.1) + +- DomainName.new calls #to_str if a non-string object is given +- Fix support for IPv6 addresses enclosed in square brackets + +**Merged pull requests:** + +- Fixed DomainName\#\<=\> for use with Ruby 1.8.7 [\#1](https://github.com/knu/ruby-domain_name/pull/1) ([drbrain](https://github.com/drbrain)) + +## [v0.5.0](https://github.com/knu/ruby-domain_name/tree/v0.5.0) (2011-11-04) +[Full Changelog](https://github.com/knu/ruby-domain_name/compare/v0.0.0...v0.5.0) + +- Implement DomainName comparison and fix cookie_domain?() +- Avoid warnings about uninitialized instance variables + +## [v0.0.0](https://github.com/knu/ruby-domain_name/tree/v0.0.0) (2011-10-29) + +- Initial release + +\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/Gemfile b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/Gemfile new file mode 100644 index 0000000..4beebeb --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/Gemfile @@ -0,0 +1,4 @@ +source 'https://rubygems.org' + +# Specify your gem's dependencies in domain_name.gemspec +gemspec diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/LICENSE.txt b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/LICENSE.txt new file mode 100644 index 0000000..67cec17 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/LICENSE.txt @@ -0,0 +1,78 @@ +Copyright (c) 2011-2017 Akinori MUSHA + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +* lib/domain_name/punycode.rb + +This file is derived from the implementation of punycode available at +here: + +https://www.verisign.com/en_US/channel-resources/domain-registry-products/idn-sdks/index.xhtml + +Copyright (C) 2000-2002 Verisign Inc., All rights reserved. + +Redistribution and use in source and binary forms, with or +without modification, are permitted provided that the following +conditions are met: + + 1) Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2) Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3) Neither the name of the VeriSign Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +This software is licensed under the BSD open source license. For more +information visit www.opensource.org. + +Authors: + John Colosi (VeriSign) + Srikanth Veeramachaneni (VeriSign) + Nagesh Chigurupati (Verisign) + Praveen Srinivasan(Verisign) + +* lib/domain_name/etld_data.rb + +This file is generated from the Public Suffix List +(https://publicsuffix.org/), which is licensed under MPL 2.0: + +https://mozilla.org/MPL/2.0/ diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/README.md b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/README.md new file mode 100644 index 0000000..50aadcd --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/README.md @@ -0,0 +1,67 @@ +domain_name +=========== + +Synopsis +-------- + +Domain Name manipulation library for Ruby + +Description +----------- + +* Parses a domain name ready for extracting the registered domain and + TLD. + + require "domain_name" + + host = DomainName("a.b.example.co.uk") + host.domain #=> "example.co.uk" + host.tld #=> "uk" + host.cookie_domain?("example.co.uk") #=> true + host.cookie_domain?("co.uk") #=> false + + host = DomainName("[::1]") # IP addresses like "192.168.1.1" and "::1" are also acceptable + host.ipaddr? #=> true + host.cookie_domain?("0:0:0:0:0:0:0:1") #=> true + +* Implements rudimental IDNA support. + +To-do's +------- + +* Implement IDNA 2008 (and/or 2003) including the domain label + validation and mapping defined in RFC 5891-5895 and UTS #46. + (work in progress) + +* Define a compact YAML serialization format. + +Installation +------------ + + gem install domain_name + +References +---------- + +* [RFC 3492](http://tools.ietf.org/html/rfc3492) (Obsolete; just for test cases) + +* [RFC 5890](http://tools.ietf.org/html/rfc5890) + +* [RFC 5891](http://tools.ietf.org/html/rfc5891) + +* [RFC 5892](http://tools.ietf.org/html/rfc5892) + +* [RFC 5893](http://tools.ietf.org/html/rfc5892) + +* [Public Suffix List](https://publicsuffix.org/list/) + +License +------- + +Copyright (c) 2011-2017 Akinori MUSHA + +Licensed under the 2-clause BSD license. + +Some portion of this library is copyrighted by third parties and +licensed under MPL 2.0 or 3-clause BSD license, +See `LICENSE.txt` for details. diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/Rakefile b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/Rakefile new file mode 100644 index 0000000..199d6f6 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/Rakefile @@ -0,0 +1,88 @@ +require 'bundler/gem_tasks' +require 'uri' +ETLD_DATA_URI = URI('https://publicsuffix.org/list/public_suffix_list.dat') +ETLD_DATA_FILE = 'data/public_suffix_list.dat' +ETLD_DATA_RB = 'lib/domain_name/etld_data.rb' +VERSION_RB = 'lib/domain_name/version.rb' + +task :default => :test + +task :test => ETLD_DATA_RB + +task :import => :etld_data + +# +# eTLD Database +# + +task :etld_data do + require 'open-uri' + require 'time' + + begin + begin + load File.join('.', ETLD_DATA_RB) + data = ETLD_DATA_URI.read( + 'If-Modified-Since' => Time.parse(DomainName::ETLD_DATA_DATE).rfc2822 + ) + rescue LoadError, NameError + data = ETLD_DATA_URI.read + end + puts 'eTLD database is modified.' + date = data.last_modified + File.write(ETLD_DATA_FILE, data) + File.utime Time.now, date, ETLD_DATA_FILE + if new_version = DomainName::VERSION.dup.sub!(/\b\d{8}\b/, date.strftime('%Y%m%d')) + File.open(VERSION_RB, 'r+') { |rb| + content = rb.read + rb.rewind + rb.write(content.sub(/(?<=^ VERSION = ')#{Regexp.quote(DomainName::VERSION)}(?='$)/, new_version)) + rb.truncate(rb.tell) + } + end + Rake::Task[ETLD_DATA_RB].execute + rescue OpenURI::HTTPError => e + if e.io.status.first == '304' # Not Modified + puts 'eTLD database is up-to-date.' + else + raise + end + end +end + +namespace :etld_data do + task :commit do + load ETLD_DATA_RB + + sh 'git', 'commit', + ETLD_DATA_FILE, + ETLD_DATA_RB, + VERSION_RB, + '-m', 'Update the eTLD database to %s.' % DomainName::ETLD_DATA_DATE + end +end + +file ETLD_DATA_RB => [ + ETLD_DATA_FILE, + ETLD_DATA_RB + '.erb', + 'tool/gen_etld_data.rb' +] do + ruby 'tool/gen_etld_data.rb' +end + +require 'rake/testtask' +Rake::TestTask.new(:test) do |test| + test.libs << 'test' + test.pattern = 'test/**/test_*.rb' + test.verbose = true +end + +require 'rdoc/task' +Rake::RDocTask.new do |rdoc| + version = DomainName::VERSION + + rdoc.rdoc_dir = 'rdoc' + rdoc.title = "domain_name #{version}" + rdoc.rdoc_files.include('lib/**/*.rb') + rdoc.rdoc_files.include(Bundler::GemHelper.gemspec.extra_rdoc_files) +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/data/public_suffix_list.dat b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/data/public_suffix_list.dat new file mode 100644 index 0000000..28aea4f --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/data/public_suffix_list.dat @@ -0,0 +1,11903 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +// Please pull this list from, and only from https://publicsuffix.org/list/public_suffix_list.dat, +// rather than any other VCS sites. Pulling from any other URL is not guaranteed to be supported. + +// Instructions on pulling and using this list can be found at https://publicsuffix.org/list/. + +// ===BEGIN ICANN DOMAINS=== + +// ac : https://en.wikipedia.org/wiki/.ac +ac +com.ac +edu.ac +gov.ac +net.ac +mil.ac +org.ac + +// ad : https://en.wikipedia.org/wiki/.ad +ad +nom.ad + +// ae : https://en.wikipedia.org/wiki/.ae +// see also: "Domain Name Eligibility Policy" at http://www.aeda.ae/eng/aepolicy.php +ae +co.ae +net.ae +org.ae +sch.ae +ac.ae +gov.ae +mil.ae + +// aero : see https://www.information.aero/index.php?id=66 +aero +accident-investigation.aero +accident-prevention.aero +aerobatic.aero +aeroclub.aero +aerodrome.aero +agents.aero +aircraft.aero +airline.aero +airport.aero +air-surveillance.aero +airtraffic.aero +air-traffic-control.aero +ambulance.aero +amusement.aero +association.aero +author.aero +ballooning.aero +broker.aero +caa.aero +cargo.aero +catering.aero +certification.aero +championship.aero +charter.aero +civilaviation.aero +club.aero +conference.aero +consultant.aero +consulting.aero +control.aero +council.aero +crew.aero +design.aero +dgca.aero +educator.aero +emergency.aero +engine.aero +engineer.aero +entertainment.aero +equipment.aero +exchange.aero +express.aero +federation.aero +flight.aero +freight.aero +fuel.aero +gliding.aero +government.aero +groundhandling.aero +group.aero +hanggliding.aero +homebuilt.aero +insurance.aero +journal.aero +journalist.aero +leasing.aero +logistics.aero +magazine.aero +maintenance.aero +media.aero +microlight.aero +modelling.aero +navigation.aero +parachuting.aero +paragliding.aero +passenger-association.aero +pilot.aero +press.aero +production.aero +recreation.aero +repbody.aero +res.aero +research.aero +rotorcraft.aero +safety.aero +scientist.aero +services.aero +show.aero +skydiving.aero +software.aero +student.aero +trader.aero +trading.aero +trainer.aero +union.aero +workinggroup.aero +works.aero + +// af : http://www.nic.af/help.jsp +af +gov.af +com.af +org.af +net.af +edu.af + +// ag : http://www.nic.ag/prices.htm +ag +com.ag +org.ag +net.ag +co.ag +nom.ag + +// ai : http://nic.com.ai/ +ai +off.ai +com.ai +net.ai +org.ai + +// al : http://www.ert.gov.al/ert_alb/faq_det.html?Id=31 +al +com.al +edu.al +gov.al +mil.al +net.al +org.al + +// am : https://en.wikipedia.org/wiki/.am +am + +// ao : https://en.wikipedia.org/wiki/.ao +// http://www.dns.ao/REGISTR.DOC +ao +ed.ao +gv.ao +og.ao +co.ao +pb.ao +it.ao + +// aq : https://en.wikipedia.org/wiki/.aq +aq + +// ar : https://nic.ar/normativa-vigente.xhtml +ar +com.ar +edu.ar +gob.ar +gov.ar +int.ar +mil.ar +net.ar +org.ar +tur.ar + +// arpa : https://en.wikipedia.org/wiki/.arpa +// Confirmed by registry 2008-06-18 +arpa +e164.arpa +in-addr.arpa +ip6.arpa +iris.arpa +uri.arpa +urn.arpa + +// as : https://en.wikipedia.org/wiki/.as +as +gov.as + +// asia : https://en.wikipedia.org/wiki/.asia +asia + +// at : https://en.wikipedia.org/wiki/.at +// Confirmed by registry 2008-06-17 +at +ac.at +co.at +gv.at +or.at + +// au : https://en.wikipedia.org/wiki/.au +// http://www.auda.org.au/ +au +// 2LDs +com.au +net.au +org.au +edu.au +gov.au +asn.au +id.au +// Historic 2LDs (closed to new registration, but sites still exist) +info.au +conf.au +oz.au +// CGDNs - http://www.cgdn.org.au/ +act.au +nsw.au +nt.au +qld.au +sa.au +tas.au +vic.au +wa.au +// 3LDs +act.edu.au +nsw.edu.au +nt.edu.au +qld.edu.au +sa.edu.au +tas.edu.au +vic.edu.au +wa.edu.au +// act.gov.au Bug 984824 - Removed at request of Greg Tankard +// nsw.gov.au Bug 547985 - Removed at request of +// nt.gov.au Bug 940478 - Removed at request of Greg Connors +qld.gov.au +sa.gov.au +tas.gov.au +vic.gov.au +wa.gov.au + +// aw : https://en.wikipedia.org/wiki/.aw +aw +com.aw + +// ax : https://en.wikipedia.org/wiki/.ax +ax + +// az : https://en.wikipedia.org/wiki/.az +az +com.az +net.az +int.az +gov.az +org.az +edu.az +info.az +pp.az +mil.az +name.az +pro.az +biz.az + +// ba : http://nic.ba/users_data/files/pravilnik_o_registraciji.pdf +ba +com.ba +edu.ba +gov.ba +mil.ba +net.ba +org.ba + +// bb : https://en.wikipedia.org/wiki/.bb +bb +biz.bb +co.bb +com.bb +edu.bb +gov.bb +info.bb +net.bb +org.bb +store.bb +tv.bb + +// bd : https://en.wikipedia.org/wiki/.bd +*.bd + +// be : https://en.wikipedia.org/wiki/.be +// Confirmed by registry 2008-06-08 +be +ac.be + +// bf : https://en.wikipedia.org/wiki/.bf +bf +gov.bf + +// bg : https://en.wikipedia.org/wiki/.bg +// https://www.register.bg/user/static/rules/en/index.html +bg +a.bg +b.bg +c.bg +d.bg +e.bg +f.bg +g.bg +h.bg +i.bg +j.bg +k.bg +l.bg +m.bg +n.bg +o.bg +p.bg +q.bg +r.bg +s.bg +t.bg +u.bg +v.bg +w.bg +x.bg +y.bg +z.bg +0.bg +1.bg +2.bg +3.bg +4.bg +5.bg +6.bg +7.bg +8.bg +9.bg + +// bh : https://en.wikipedia.org/wiki/.bh +bh +com.bh +edu.bh +net.bh +org.bh +gov.bh + +// bi : https://en.wikipedia.org/wiki/.bi +// http://whois.nic.bi/ +bi +co.bi +com.bi +edu.bi +or.bi +org.bi + +// biz : https://en.wikipedia.org/wiki/.biz +biz + +// bj : https://en.wikipedia.org/wiki/.bj +bj +asso.bj +barreau.bj +gouv.bj + +// bm : http://www.bermudanic.bm/dnr-text.txt +bm +com.bm +edu.bm +gov.bm +net.bm +org.bm + +// bn : https://en.wikipedia.org/wiki/.bn +*.bn + +// bo : http://www.nic.bo/ +bo +com.bo +edu.bo +gov.bo +gob.bo +int.bo +org.bo +net.bo +mil.bo +tv.bo + +// br : http://registro.br/dominio/categoria.html +// Submitted by registry +br +adm.br +adv.br +agr.br +am.br +arq.br +art.br +ato.br +b.br +bio.br +blog.br +bmd.br +cim.br +cng.br +cnt.br +com.br +coop.br +ecn.br +eco.br +edu.br +emp.br +eng.br +esp.br +etc.br +eti.br +far.br +flog.br +fm.br +fnd.br +fot.br +fst.br +g12.br +ggf.br +gov.br +imb.br +ind.br +inf.br +jor.br +jus.br +leg.br +lel.br +mat.br +med.br +mil.br +mp.br +mus.br +net.br +*.nom.br +not.br +ntr.br +odo.br +org.br +ppg.br +pro.br +psc.br +psi.br +qsl.br +radio.br +rec.br +slg.br +srv.br +taxi.br +teo.br +tmp.br +trd.br +tur.br +tv.br +vet.br +vlog.br +wiki.br +zlg.br + +// bs : http://www.nic.bs/rules.html +bs +com.bs +net.bs +org.bs +edu.bs +gov.bs + +// bt : https://en.wikipedia.org/wiki/.bt +bt +com.bt +edu.bt +gov.bt +net.bt +org.bt + +// bv : No registrations at this time. +// Submitted by registry +bv + +// bw : https://en.wikipedia.org/wiki/.bw +// http://www.gobin.info/domainname/bw.doc +// list of other 2nd level tlds ? +bw +co.bw +org.bw + +// by : https://en.wikipedia.org/wiki/.by +// http://tld.by/rules_2006_en.html +// list of other 2nd level tlds ? +by +gov.by +mil.by +// Official information does not indicate that com.by is a reserved +// second-level domain, but it's being used as one (see www.google.com.by and +// www.yahoo.com.by, for example), so we list it here for safety's sake. +com.by + +// http://hoster.by/ +of.by + +// bz : https://en.wikipedia.org/wiki/.bz +// http://www.belizenic.bz/ +bz +com.bz +net.bz +org.bz +edu.bz +gov.bz + +// ca : https://en.wikipedia.org/wiki/.ca +ca +// ca geographical names +ab.ca +bc.ca +mb.ca +nb.ca +nf.ca +nl.ca +ns.ca +nt.ca +nu.ca +on.ca +pe.ca +qc.ca +sk.ca +yk.ca +// gc.ca: https://en.wikipedia.org/wiki/.gc.ca +// see also: http://registry.gc.ca/en/SubdomainFAQ +gc.ca + +// cat : https://en.wikipedia.org/wiki/.cat +cat + +// cc : https://en.wikipedia.org/wiki/.cc +cc + +// cd : https://en.wikipedia.org/wiki/.cd +// see also: https://www.nic.cd/domain/insertDomain_2.jsp?act=1 +cd +gov.cd + +// cf : https://en.wikipedia.org/wiki/.cf +cf + +// cg : https://en.wikipedia.org/wiki/.cg +cg + +// ch : https://en.wikipedia.org/wiki/.ch +ch + +// ci : https://en.wikipedia.org/wiki/.ci +// http://www.nic.ci/index.php?page=charte +ci +org.ci +or.ci +com.ci +co.ci +edu.ci +ed.ci +ac.ci +net.ci +go.ci +asso.ci +aéroport.ci +int.ci +presse.ci +md.ci +gouv.ci + +// ck : https://en.wikipedia.org/wiki/.ck +*.ck +!www.ck + +// cl : https://en.wikipedia.org/wiki/.cl +cl +gov.cl +gob.cl +co.cl +mil.cl + +// cm : https://en.wikipedia.org/wiki/.cm plus bug 981927 +cm +co.cm +com.cm +gov.cm +net.cm + +// cn : https://en.wikipedia.org/wiki/.cn +// Submitted by registry +cn +ac.cn +com.cn +edu.cn +gov.cn +net.cn +org.cn +mil.cn +公司.cn +网络.cn +網絡.cn +// cn geographic names +ah.cn +bj.cn +cq.cn +fj.cn +gd.cn +gs.cn +gz.cn +gx.cn +ha.cn +hb.cn +he.cn +hi.cn +hl.cn +hn.cn +jl.cn +js.cn +jx.cn +ln.cn +nm.cn +nx.cn +qh.cn +sc.cn +sd.cn +sh.cn +sn.cn +sx.cn +tj.cn +xj.cn +xz.cn +yn.cn +zj.cn +hk.cn +mo.cn +tw.cn + +// co : https://en.wikipedia.org/wiki/.co +// Submitted by registry +co +arts.co +com.co +edu.co +firm.co +gov.co +info.co +int.co +mil.co +net.co +nom.co +org.co +rec.co +web.co + +// com : https://en.wikipedia.org/wiki/.com +com + +// coop : https://en.wikipedia.org/wiki/.coop +coop + +// cr : http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do +cr +ac.cr +co.cr +ed.cr +fi.cr +go.cr +or.cr +sa.cr + +// cu : https://en.wikipedia.org/wiki/.cu +cu +com.cu +edu.cu +org.cu +net.cu +gov.cu +inf.cu + +// cv : https://en.wikipedia.org/wiki/.cv +cv + +// cw : http://www.una.cw/cw_registry/ +// Confirmed by registry 2013-03-26 +cw +com.cw +edu.cw +net.cw +org.cw + +// cx : https://en.wikipedia.org/wiki/.cx +// list of other 2nd level tlds ? +cx +gov.cx + +// cy : http://www.nic.cy/ +// Submitted by registry Panayiotou Fotia +cy +ac.cy +biz.cy +com.cy +ekloges.cy +gov.cy +ltd.cy +name.cy +net.cy +org.cy +parliament.cy +press.cy +pro.cy +tm.cy + +// cz : https://en.wikipedia.org/wiki/.cz +cz + +// de : https://en.wikipedia.org/wiki/.de +// Confirmed by registry (with technical +// reservations) 2008-07-01 +de + +// dj : https://en.wikipedia.org/wiki/.dj +dj + +// dk : https://en.wikipedia.org/wiki/.dk +// Confirmed by registry 2008-06-17 +dk + +// dm : https://en.wikipedia.org/wiki/.dm +dm +com.dm +net.dm +org.dm +edu.dm +gov.dm + +// do : https://en.wikipedia.org/wiki/.do +do +art.do +com.do +edu.do +gob.do +gov.do +mil.do +net.do +org.do +sld.do +web.do + +// dz : https://en.wikipedia.org/wiki/.dz +dz +com.dz +org.dz +net.dz +gov.dz +edu.dz +asso.dz +pol.dz +art.dz + +// ec : http://www.nic.ec/reg/paso1.asp +// Submitted by registry +ec +com.ec +info.ec +net.ec +fin.ec +k12.ec +med.ec +pro.ec +org.ec +edu.ec +gov.ec +gob.ec +mil.ec + +// edu : https://en.wikipedia.org/wiki/.edu +edu + +// ee : http://www.eenet.ee/EENet/dom_reeglid.html#lisa_B +ee +edu.ee +gov.ee +riik.ee +lib.ee +med.ee +com.ee +pri.ee +aip.ee +org.ee +fie.ee + +// eg : https://en.wikipedia.org/wiki/.eg +eg +com.eg +edu.eg +eun.eg +gov.eg +mil.eg +name.eg +net.eg +org.eg +sci.eg + +// er : https://en.wikipedia.org/wiki/.er +*.er + +// es : https://www.nic.es/site_ingles/ingles/dominios/index.html +es +com.es +nom.es +org.es +gob.es +edu.es + +// et : https://en.wikipedia.org/wiki/.et +et +com.et +gov.et +org.et +edu.et +biz.et +name.et +info.et +net.et + +// eu : https://en.wikipedia.org/wiki/.eu +eu + +// fi : https://en.wikipedia.org/wiki/.fi +fi +// aland.fi : https://en.wikipedia.org/wiki/.ax +// This domain is being phased out in favor of .ax. As there are still many +// domains under aland.fi, we still keep it on the list until aland.fi is +// completely removed. +// TODO: Check for updates (expected to be phased out around Q1/2009) +aland.fi + +// fj : https://en.wikipedia.org/wiki/.fj +*.fj + +// fk : https://en.wikipedia.org/wiki/.fk +*.fk + +// fm : https://en.wikipedia.org/wiki/.fm +fm + +// fo : https://en.wikipedia.org/wiki/.fo +fo + +// fr : http://www.afnic.fr/ +// domaines descriptifs : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-descriptifs +fr +com.fr +asso.fr +nom.fr +prd.fr +presse.fr +tm.fr +// domaines sectoriels : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-sectoriels +aeroport.fr +assedic.fr +avocat.fr +avoues.fr +cci.fr +chambagri.fr +chirurgiens-dentistes.fr +experts-comptables.fr +geometre-expert.fr +gouv.fr +greta.fr +huissier-justice.fr +medecin.fr +notaires.fr +pharmacien.fr +port.fr +veterinaire.fr + +// ga : https://en.wikipedia.org/wiki/.ga +ga + +// gb : This registry is effectively dormant +// Submitted by registry +gb + +// gd : https://en.wikipedia.org/wiki/.gd +gd + +// ge : http://www.nic.net.ge/policy_en.pdf +ge +com.ge +edu.ge +gov.ge +org.ge +mil.ge +net.ge +pvt.ge + +// gf : https://en.wikipedia.org/wiki/.gf +gf + +// gg : http://www.channelisles.net/register-domains/ +// Confirmed by registry 2013-11-28 +gg +co.gg +net.gg +org.gg + +// gh : https://en.wikipedia.org/wiki/.gh +// see also: http://www.nic.gh/reg_now.php +// Although domains directly at second level are not possible at the moment, +// they have been possible for some time and may come back. +gh +com.gh +edu.gh +gov.gh +org.gh +mil.gh + +// gi : http://www.nic.gi/rules.html +gi +com.gi +ltd.gi +gov.gi +mod.gi +edu.gi +org.gi + +// gl : https://en.wikipedia.org/wiki/.gl +// http://nic.gl +gl +co.gl +com.gl +edu.gl +net.gl +org.gl + +// gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm +gm + +// gn : http://psg.com/dns/gn/gn.txt +// Submitted by registry +gn +ac.gn +com.gn +edu.gn +gov.gn +org.gn +net.gn + +// gov : https://en.wikipedia.org/wiki/.gov +gov + +// gp : http://www.nic.gp/index.php?lang=en +gp +com.gp +net.gp +mobi.gp +edu.gp +org.gp +asso.gp + +// gq : https://en.wikipedia.org/wiki/.gq +gq + +// gr : https://grweb.ics.forth.gr/english/1617-B-2005.html +// Submitted by registry +gr +com.gr +edu.gr +net.gr +org.gr +gov.gr + +// gs : https://en.wikipedia.org/wiki/.gs +gs + +// gt : http://www.gt/politicas_de_registro.html +gt +com.gt +edu.gt +gob.gt +ind.gt +mil.gt +net.gt +org.gt + +// gu : http://gadao.gov.gu/registration.txt +*.gu + +// gw : https://en.wikipedia.org/wiki/.gw +gw + +// gy : https://en.wikipedia.org/wiki/.gy +// http://registry.gy/ +gy +co.gy +com.gy +edu.gy +gov.gy +net.gy +org.gy + +// hk : https://www.hkdnr.hk +// Submitted by registry +hk +com.hk +edu.hk +gov.hk +idv.hk +net.hk +org.hk +公司.hk +教育.hk +敎育.hk +政府.hk +個人.hk +个人.hk +箇人.hk +網络.hk +网络.hk +组織.hk +網絡.hk +网絡.hk +组织.hk +組織.hk +組织.hk + +// hm : https://en.wikipedia.org/wiki/.hm +hm + +// hn : http://www.nic.hn/politicas/ps02,,05.html +hn +com.hn +edu.hn +org.hn +net.hn +mil.hn +gob.hn + +// hr : http://www.dns.hr/documents/pdf/HRTLD-regulations.pdf +hr +iz.hr +from.hr +name.hr +com.hr + +// ht : http://www.nic.ht/info/charte.cfm +ht +com.ht +shop.ht +firm.ht +info.ht +adult.ht +net.ht +pro.ht +org.ht +med.ht +art.ht +coop.ht +pol.ht +asso.ht +edu.ht +rel.ht +gouv.ht +perso.ht + +// hu : http://www.domain.hu/domain/English/sld.html +// Confirmed by registry 2008-06-12 +hu +co.hu +info.hu +org.hu +priv.hu +sport.hu +tm.hu +2000.hu +agrar.hu +bolt.hu +casino.hu +city.hu +erotica.hu +erotika.hu +film.hu +forum.hu +games.hu +hotel.hu +ingatlan.hu +jogasz.hu +konyvelo.hu +lakas.hu +media.hu +news.hu +reklam.hu +sex.hu +shop.hu +suli.hu +szex.hu +tozsde.hu +utazas.hu +video.hu + +// id : https://register.pandi.or.id/ +id +ac.id +biz.id +co.id +desa.id +go.id +mil.id +my.id +net.id +or.id +sch.id +web.id + +// ie : https://en.wikipedia.org/wiki/.ie +ie +gov.ie + +// il : http://www.isoc.org.il/domains/ +il +ac.il +co.il +gov.il +idf.il +k12.il +muni.il +net.il +org.il + +// im : https://www.nic.im/ +// Submitted by registry +im +ac.im +co.im +com.im +ltd.co.im +net.im +org.im +plc.co.im +tt.im +tv.im + +// in : https://en.wikipedia.org/wiki/.in +// see also: https://registry.in/Policies +// Please note, that nic.in is not an official eTLD, but used by most +// government institutions. +in +co.in +firm.in +net.in +org.in +gen.in +ind.in +nic.in +ac.in +edu.in +res.in +gov.in +mil.in + +// info : https://en.wikipedia.org/wiki/.info +info + +// int : https://en.wikipedia.org/wiki/.int +// Confirmed by registry 2008-06-18 +int +eu.int + +// io : http://www.nic.io/rules.html +// list of other 2nd level tlds ? +io +com.io + +// iq : http://www.cmc.iq/english/iq/iqregister1.htm +iq +gov.iq +edu.iq +mil.iq +com.iq +org.iq +net.iq + +// ir : http://www.nic.ir/Terms_and_Conditions_ir,_Appendix_1_Domain_Rules +// Also see http://www.nic.ir/Internationalized_Domain_Names +// Two .ir entries added at request of , 2010-04-16 +ir +ac.ir +co.ir +gov.ir +id.ir +net.ir +org.ir +sch.ir +// xn--mgba3a4f16a.ir (.ir, Persian YEH) +ایران.ir +// xn--mgba3a4fra.ir (.ir, Arabic YEH) +ايران.ir + +// is : http://www.isnic.is/domain/rules.php +// Confirmed by registry 2008-12-06 +is +net.is +com.is +edu.is +gov.is +org.is +int.is + +// it : https://en.wikipedia.org/wiki/.it +it +gov.it +edu.it +// Reserved geo-names: +// http://www.nic.it/documenti/regolamenti-e-linee-guida/regolamento-assegnazione-versione-6.0.pdf +// There is also a list of reserved geo-names corresponding to Italian municipalities +// http://www.nic.it/documenti/appendice-c.pdf, but it is not included here. +// Regions +abr.it +abruzzo.it +aosta-valley.it +aostavalley.it +bas.it +basilicata.it +cal.it +calabria.it +cam.it +campania.it +emilia-romagna.it +emiliaromagna.it +emr.it +friuli-v-giulia.it +friuli-ve-giulia.it +friuli-vegiulia.it +friuli-venezia-giulia.it +friuli-veneziagiulia.it +friuli-vgiulia.it +friuliv-giulia.it +friulive-giulia.it +friulivegiulia.it +friulivenezia-giulia.it +friuliveneziagiulia.it +friulivgiulia.it +fvg.it +laz.it +lazio.it +lig.it +liguria.it +lom.it +lombardia.it +lombardy.it +lucania.it +mar.it +marche.it +mol.it +molise.it +piedmont.it +piemonte.it +pmn.it +pug.it +puglia.it +sar.it +sardegna.it +sardinia.it +sic.it +sicilia.it +sicily.it +taa.it +tos.it +toscana.it +trentino-a-adige.it +trentino-aadige.it +trentino-alto-adige.it +trentino-altoadige.it +trentino-s-tirol.it +trentino-stirol.it +trentino-sud-tirol.it +trentino-sudtirol.it +trentino-sued-tirol.it +trentino-suedtirol.it +trentinoa-adige.it +trentinoaadige.it +trentinoalto-adige.it +trentinoaltoadige.it +trentinos-tirol.it +trentinostirol.it +trentinosud-tirol.it +trentinosudtirol.it +trentinosued-tirol.it +trentinosuedtirol.it +tuscany.it +umb.it +umbria.it +val-d-aosta.it +val-daosta.it +vald-aosta.it +valdaosta.it +valle-aosta.it +valle-d-aosta.it +valle-daosta.it +valleaosta.it +valled-aosta.it +valledaosta.it +vallee-aoste.it +valleeaoste.it +vao.it +vda.it +ven.it +veneto.it +// Provinces +ag.it +agrigento.it +al.it +alessandria.it +alto-adige.it +altoadige.it +an.it +ancona.it +andria-barletta-trani.it +andria-trani-barletta.it +andriabarlettatrani.it +andriatranibarletta.it +ao.it +aosta.it +aoste.it +ap.it +aq.it +aquila.it +ar.it +arezzo.it +ascoli-piceno.it +ascolipiceno.it +asti.it +at.it +av.it +avellino.it +ba.it +balsan.it +bari.it +barletta-trani-andria.it +barlettatraniandria.it +belluno.it +benevento.it +bergamo.it +bg.it +bi.it +biella.it +bl.it +bn.it +bo.it +bologna.it +bolzano.it +bozen.it +br.it +brescia.it +brindisi.it +bs.it +bt.it +bz.it +ca.it +cagliari.it +caltanissetta.it +campidano-medio.it +campidanomedio.it +campobasso.it +carbonia-iglesias.it +carboniaiglesias.it +carrara-massa.it +carraramassa.it +caserta.it +catania.it +catanzaro.it +cb.it +ce.it +cesena-forli.it +cesenaforli.it +ch.it +chieti.it +ci.it +cl.it +cn.it +co.it +como.it +cosenza.it +cr.it +cremona.it +crotone.it +cs.it +ct.it +cuneo.it +cz.it +dell-ogliastra.it +dellogliastra.it +en.it +enna.it +fc.it +fe.it +fermo.it +ferrara.it +fg.it +fi.it +firenze.it +florence.it +fm.it +foggia.it +forli-cesena.it +forlicesena.it +fr.it +frosinone.it +ge.it +genoa.it +genova.it +go.it +gorizia.it +gr.it +grosseto.it +iglesias-carbonia.it +iglesiascarbonia.it +im.it +imperia.it +is.it +isernia.it +kr.it +la-spezia.it +laquila.it +laspezia.it +latina.it +lc.it +le.it +lecce.it +lecco.it +li.it +livorno.it +lo.it +lodi.it +lt.it +lu.it +lucca.it +macerata.it +mantova.it +massa-carrara.it +massacarrara.it +matera.it +mb.it +mc.it +me.it +medio-campidano.it +mediocampidano.it +messina.it +mi.it +milan.it +milano.it +mn.it +mo.it +modena.it +monza-brianza.it +monza-e-della-brianza.it +monza.it +monzabrianza.it +monzaebrianza.it +monzaedellabrianza.it +ms.it +mt.it +na.it +naples.it +napoli.it +no.it +novara.it +nu.it +nuoro.it +og.it +ogliastra.it +olbia-tempio.it +olbiatempio.it +or.it +oristano.it +ot.it +pa.it +padova.it +padua.it +palermo.it +parma.it +pavia.it +pc.it +pd.it +pe.it +perugia.it +pesaro-urbino.it +pesarourbino.it +pescara.it +pg.it +pi.it +piacenza.it +pisa.it +pistoia.it +pn.it +po.it +pordenone.it +potenza.it +pr.it +prato.it +pt.it +pu.it +pv.it +pz.it +ra.it +ragusa.it +ravenna.it +rc.it +re.it +reggio-calabria.it +reggio-emilia.it +reggiocalabria.it +reggioemilia.it +rg.it +ri.it +rieti.it +rimini.it +rm.it +rn.it +ro.it +roma.it +rome.it +rovigo.it +sa.it +salerno.it +sassari.it +savona.it +si.it +siena.it +siracusa.it +so.it +sondrio.it +sp.it +sr.it +ss.it +suedtirol.it +sv.it +ta.it +taranto.it +te.it +tempio-olbia.it +tempioolbia.it +teramo.it +terni.it +tn.it +to.it +torino.it +tp.it +tr.it +trani-andria-barletta.it +trani-barletta-andria.it +traniandriabarletta.it +tranibarlettaandria.it +trapani.it +trentino.it +trento.it +treviso.it +trieste.it +ts.it +turin.it +tv.it +ud.it +udine.it +urbino-pesaro.it +urbinopesaro.it +va.it +varese.it +vb.it +vc.it +ve.it +venezia.it +venice.it +verbania.it +vercelli.it +verona.it +vi.it +vibo-valentia.it +vibovalentia.it +vicenza.it +viterbo.it +vr.it +vs.it +vt.it +vv.it + +// je : http://www.channelisles.net/register-domains/ +// Confirmed by registry 2013-11-28 +je +co.je +net.je +org.je + +// jm : http://www.com.jm/register.html +*.jm + +// jo : http://www.dns.jo/Registration_policy.aspx +jo +com.jo +org.jo +net.jo +edu.jo +sch.jo +gov.jo +mil.jo +name.jo + +// jobs : https://en.wikipedia.org/wiki/.jobs +jobs + +// jp : https://en.wikipedia.org/wiki/.jp +// http://jprs.co.jp/en/jpdomain.html +// Submitted by registry +jp +// jp organizational type names +ac.jp +ad.jp +co.jp +ed.jp +go.jp +gr.jp +lg.jp +ne.jp +or.jp +// jp prefecture type names +aichi.jp +akita.jp +aomori.jp +chiba.jp +ehime.jp +fukui.jp +fukuoka.jp +fukushima.jp +gifu.jp +gunma.jp +hiroshima.jp +hokkaido.jp +hyogo.jp +ibaraki.jp +ishikawa.jp +iwate.jp +kagawa.jp +kagoshima.jp +kanagawa.jp +kochi.jp +kumamoto.jp +kyoto.jp +mie.jp +miyagi.jp +miyazaki.jp +nagano.jp +nagasaki.jp +nara.jp +niigata.jp +oita.jp +okayama.jp +okinawa.jp +osaka.jp +saga.jp +saitama.jp +shiga.jp +shimane.jp +shizuoka.jp +tochigi.jp +tokushima.jp +tokyo.jp +tottori.jp +toyama.jp +wakayama.jp +yamagata.jp +yamaguchi.jp +yamanashi.jp +栃木.jp +愛知.jp +愛媛.jp +兵庫.jp +熊本.jp +茨城.jp +北海道.jp +千葉.jp +和歌山.jp +長崎.jp +長野.jp +新潟.jp +青森.jp +静岡.jp +東京.jp +石川.jp +埼玉.jp +三重.jp +京都.jp +佐賀.jp +大分.jp +大阪.jp +奈良.jp +宮城.jp +宮崎.jp +富山.jp +山口.jp +山形.jp +山梨.jp +岩手.jp +岐阜.jp +岡山.jp +島根.jp +広島.jp +徳島.jp +沖縄.jp +滋賀.jp +神奈川.jp +福井.jp +福岡.jp +福島.jp +秋田.jp +群馬.jp +香川.jp +高知.jp +鳥取.jp +鹿児島.jp +// jp geographic type names +// http://jprs.jp/doc/rule/saisoku-1.html +*.kawasaki.jp +*.kitakyushu.jp +*.kobe.jp +*.nagoya.jp +*.sapporo.jp +*.sendai.jp +*.yokohama.jp +!city.kawasaki.jp +!city.kitakyushu.jp +!city.kobe.jp +!city.nagoya.jp +!city.sapporo.jp +!city.sendai.jp +!city.yokohama.jp +// 4th level registration +aisai.aichi.jp +ama.aichi.jp +anjo.aichi.jp +asuke.aichi.jp +chiryu.aichi.jp +chita.aichi.jp +fuso.aichi.jp +gamagori.aichi.jp +handa.aichi.jp +hazu.aichi.jp +hekinan.aichi.jp +higashiura.aichi.jp +ichinomiya.aichi.jp +inazawa.aichi.jp +inuyama.aichi.jp +isshiki.aichi.jp +iwakura.aichi.jp +kanie.aichi.jp +kariya.aichi.jp +kasugai.aichi.jp +kira.aichi.jp +kiyosu.aichi.jp +komaki.aichi.jp +konan.aichi.jp +kota.aichi.jp +mihama.aichi.jp +miyoshi.aichi.jp +nishio.aichi.jp +nisshin.aichi.jp +obu.aichi.jp +oguchi.aichi.jp +oharu.aichi.jp +okazaki.aichi.jp +owariasahi.aichi.jp +seto.aichi.jp +shikatsu.aichi.jp +shinshiro.aichi.jp +shitara.aichi.jp +tahara.aichi.jp +takahama.aichi.jp +tobishima.aichi.jp +toei.aichi.jp +togo.aichi.jp +tokai.aichi.jp +tokoname.aichi.jp +toyoake.aichi.jp +toyohashi.aichi.jp +toyokawa.aichi.jp +toyone.aichi.jp +toyota.aichi.jp +tsushima.aichi.jp +yatomi.aichi.jp +akita.akita.jp +daisen.akita.jp +fujisato.akita.jp +gojome.akita.jp +hachirogata.akita.jp +happou.akita.jp +higashinaruse.akita.jp +honjo.akita.jp +honjyo.akita.jp +ikawa.akita.jp +kamikoani.akita.jp +kamioka.akita.jp +katagami.akita.jp +kazuno.akita.jp +kitaakita.akita.jp +kosaka.akita.jp +kyowa.akita.jp +misato.akita.jp +mitane.akita.jp +moriyoshi.akita.jp +nikaho.akita.jp +noshiro.akita.jp +odate.akita.jp +oga.akita.jp +ogata.akita.jp +semboku.akita.jp +yokote.akita.jp +yurihonjo.akita.jp +aomori.aomori.jp +gonohe.aomori.jp +hachinohe.aomori.jp +hashikami.aomori.jp +hiranai.aomori.jp +hirosaki.aomori.jp +itayanagi.aomori.jp +kuroishi.aomori.jp +misawa.aomori.jp +mutsu.aomori.jp +nakadomari.aomori.jp +noheji.aomori.jp +oirase.aomori.jp +owani.aomori.jp +rokunohe.aomori.jp +sannohe.aomori.jp +shichinohe.aomori.jp +shingo.aomori.jp +takko.aomori.jp +towada.aomori.jp +tsugaru.aomori.jp +tsuruta.aomori.jp +abiko.chiba.jp +asahi.chiba.jp +chonan.chiba.jp +chosei.chiba.jp +choshi.chiba.jp +chuo.chiba.jp +funabashi.chiba.jp +futtsu.chiba.jp +hanamigawa.chiba.jp +ichihara.chiba.jp +ichikawa.chiba.jp +ichinomiya.chiba.jp +inzai.chiba.jp +isumi.chiba.jp +kamagaya.chiba.jp +kamogawa.chiba.jp +kashiwa.chiba.jp +katori.chiba.jp +katsuura.chiba.jp +kimitsu.chiba.jp +kisarazu.chiba.jp +kozaki.chiba.jp +kujukuri.chiba.jp +kyonan.chiba.jp +matsudo.chiba.jp +midori.chiba.jp +mihama.chiba.jp +minamiboso.chiba.jp +mobara.chiba.jp +mutsuzawa.chiba.jp +nagara.chiba.jp +nagareyama.chiba.jp +narashino.chiba.jp +narita.chiba.jp +noda.chiba.jp +oamishirasato.chiba.jp +omigawa.chiba.jp +onjuku.chiba.jp +otaki.chiba.jp +sakae.chiba.jp +sakura.chiba.jp +shimofusa.chiba.jp +shirako.chiba.jp +shiroi.chiba.jp +shisui.chiba.jp +sodegaura.chiba.jp +sosa.chiba.jp +tako.chiba.jp +tateyama.chiba.jp +togane.chiba.jp +tohnosho.chiba.jp +tomisato.chiba.jp +urayasu.chiba.jp +yachimata.chiba.jp +yachiyo.chiba.jp +yokaichiba.chiba.jp +yokoshibahikari.chiba.jp +yotsukaido.chiba.jp +ainan.ehime.jp +honai.ehime.jp +ikata.ehime.jp +imabari.ehime.jp +iyo.ehime.jp +kamijima.ehime.jp +kihoku.ehime.jp +kumakogen.ehime.jp +masaki.ehime.jp +matsuno.ehime.jp +matsuyama.ehime.jp +namikata.ehime.jp +niihama.ehime.jp +ozu.ehime.jp +saijo.ehime.jp +seiyo.ehime.jp +shikokuchuo.ehime.jp +tobe.ehime.jp +toon.ehime.jp +uchiko.ehime.jp +uwajima.ehime.jp +yawatahama.ehime.jp +echizen.fukui.jp +eiheiji.fukui.jp +fukui.fukui.jp +ikeda.fukui.jp +katsuyama.fukui.jp +mihama.fukui.jp +minamiechizen.fukui.jp +obama.fukui.jp +ohi.fukui.jp +ono.fukui.jp +sabae.fukui.jp +sakai.fukui.jp +takahama.fukui.jp +tsuruga.fukui.jp +wakasa.fukui.jp +ashiya.fukuoka.jp +buzen.fukuoka.jp +chikugo.fukuoka.jp +chikuho.fukuoka.jp +chikujo.fukuoka.jp +chikushino.fukuoka.jp +chikuzen.fukuoka.jp +chuo.fukuoka.jp +dazaifu.fukuoka.jp +fukuchi.fukuoka.jp +hakata.fukuoka.jp +higashi.fukuoka.jp +hirokawa.fukuoka.jp +hisayama.fukuoka.jp +iizuka.fukuoka.jp +inatsuki.fukuoka.jp +kaho.fukuoka.jp +kasuga.fukuoka.jp +kasuya.fukuoka.jp +kawara.fukuoka.jp +keisen.fukuoka.jp +koga.fukuoka.jp +kurate.fukuoka.jp +kurogi.fukuoka.jp +kurume.fukuoka.jp +minami.fukuoka.jp +miyako.fukuoka.jp +miyama.fukuoka.jp +miyawaka.fukuoka.jp +mizumaki.fukuoka.jp +munakata.fukuoka.jp +nakagawa.fukuoka.jp +nakama.fukuoka.jp +nishi.fukuoka.jp +nogata.fukuoka.jp +ogori.fukuoka.jp +okagaki.fukuoka.jp +okawa.fukuoka.jp +oki.fukuoka.jp +omuta.fukuoka.jp +onga.fukuoka.jp +onojo.fukuoka.jp +oto.fukuoka.jp +saigawa.fukuoka.jp +sasaguri.fukuoka.jp +shingu.fukuoka.jp +shinyoshitomi.fukuoka.jp +shonai.fukuoka.jp +soeda.fukuoka.jp +sue.fukuoka.jp +tachiarai.fukuoka.jp +tagawa.fukuoka.jp +takata.fukuoka.jp +toho.fukuoka.jp +toyotsu.fukuoka.jp +tsuiki.fukuoka.jp +ukiha.fukuoka.jp +umi.fukuoka.jp +usui.fukuoka.jp +yamada.fukuoka.jp +yame.fukuoka.jp +yanagawa.fukuoka.jp +yukuhashi.fukuoka.jp +aizubange.fukushima.jp +aizumisato.fukushima.jp +aizuwakamatsu.fukushima.jp +asakawa.fukushima.jp +bandai.fukushima.jp +date.fukushima.jp +fukushima.fukushima.jp +furudono.fukushima.jp +futaba.fukushima.jp +hanawa.fukushima.jp +higashi.fukushima.jp +hirata.fukushima.jp +hirono.fukushima.jp +iitate.fukushima.jp +inawashiro.fukushima.jp +ishikawa.fukushima.jp +iwaki.fukushima.jp +izumizaki.fukushima.jp +kagamiishi.fukushima.jp +kaneyama.fukushima.jp +kawamata.fukushima.jp +kitakata.fukushima.jp +kitashiobara.fukushima.jp +koori.fukushima.jp +koriyama.fukushima.jp +kunimi.fukushima.jp +miharu.fukushima.jp +mishima.fukushima.jp +namie.fukushima.jp +nango.fukushima.jp +nishiaizu.fukushima.jp +nishigo.fukushima.jp +okuma.fukushima.jp +omotego.fukushima.jp +ono.fukushima.jp +otama.fukushima.jp +samegawa.fukushima.jp +shimogo.fukushima.jp +shirakawa.fukushima.jp +showa.fukushima.jp +soma.fukushima.jp +sukagawa.fukushima.jp +taishin.fukushima.jp +tamakawa.fukushima.jp +tanagura.fukushima.jp +tenei.fukushima.jp +yabuki.fukushima.jp +yamato.fukushima.jp +yamatsuri.fukushima.jp +yanaizu.fukushima.jp +yugawa.fukushima.jp +anpachi.gifu.jp +ena.gifu.jp +gifu.gifu.jp +ginan.gifu.jp +godo.gifu.jp +gujo.gifu.jp +hashima.gifu.jp +hichiso.gifu.jp +hida.gifu.jp +higashishirakawa.gifu.jp +ibigawa.gifu.jp +ikeda.gifu.jp +kakamigahara.gifu.jp +kani.gifu.jp +kasahara.gifu.jp +kasamatsu.gifu.jp +kawaue.gifu.jp +kitagata.gifu.jp +mino.gifu.jp +minokamo.gifu.jp +mitake.gifu.jp +mizunami.gifu.jp +motosu.gifu.jp +nakatsugawa.gifu.jp +ogaki.gifu.jp +sakahogi.gifu.jp +seki.gifu.jp +sekigahara.gifu.jp +shirakawa.gifu.jp +tajimi.gifu.jp +takayama.gifu.jp +tarui.gifu.jp +toki.gifu.jp +tomika.gifu.jp +wanouchi.gifu.jp +yamagata.gifu.jp +yaotsu.gifu.jp +yoro.gifu.jp +annaka.gunma.jp +chiyoda.gunma.jp +fujioka.gunma.jp +higashiagatsuma.gunma.jp +isesaki.gunma.jp +itakura.gunma.jp +kanna.gunma.jp +kanra.gunma.jp +katashina.gunma.jp +kawaba.gunma.jp +kiryu.gunma.jp +kusatsu.gunma.jp +maebashi.gunma.jp +meiwa.gunma.jp +midori.gunma.jp +minakami.gunma.jp +naganohara.gunma.jp +nakanojo.gunma.jp +nanmoku.gunma.jp +numata.gunma.jp +oizumi.gunma.jp +ora.gunma.jp +ota.gunma.jp +shibukawa.gunma.jp +shimonita.gunma.jp +shinto.gunma.jp +showa.gunma.jp +takasaki.gunma.jp +takayama.gunma.jp +tamamura.gunma.jp +tatebayashi.gunma.jp +tomioka.gunma.jp +tsukiyono.gunma.jp +tsumagoi.gunma.jp +ueno.gunma.jp +yoshioka.gunma.jp +asaminami.hiroshima.jp +daiwa.hiroshima.jp +etajima.hiroshima.jp +fuchu.hiroshima.jp +fukuyama.hiroshima.jp +hatsukaichi.hiroshima.jp +higashihiroshima.hiroshima.jp +hongo.hiroshima.jp +jinsekikogen.hiroshima.jp +kaita.hiroshima.jp +kui.hiroshima.jp +kumano.hiroshima.jp +kure.hiroshima.jp +mihara.hiroshima.jp +miyoshi.hiroshima.jp +naka.hiroshima.jp +onomichi.hiroshima.jp +osakikamijima.hiroshima.jp +otake.hiroshima.jp +saka.hiroshima.jp +sera.hiroshima.jp +seranishi.hiroshima.jp +shinichi.hiroshima.jp +shobara.hiroshima.jp +takehara.hiroshima.jp +abashiri.hokkaido.jp +abira.hokkaido.jp +aibetsu.hokkaido.jp +akabira.hokkaido.jp +akkeshi.hokkaido.jp +asahikawa.hokkaido.jp +ashibetsu.hokkaido.jp +ashoro.hokkaido.jp +assabu.hokkaido.jp +atsuma.hokkaido.jp +bibai.hokkaido.jp +biei.hokkaido.jp +bifuka.hokkaido.jp +bihoro.hokkaido.jp +biratori.hokkaido.jp +chippubetsu.hokkaido.jp +chitose.hokkaido.jp +date.hokkaido.jp +ebetsu.hokkaido.jp +embetsu.hokkaido.jp +eniwa.hokkaido.jp +erimo.hokkaido.jp +esan.hokkaido.jp +esashi.hokkaido.jp +fukagawa.hokkaido.jp +fukushima.hokkaido.jp +furano.hokkaido.jp +furubira.hokkaido.jp +haboro.hokkaido.jp +hakodate.hokkaido.jp +hamatonbetsu.hokkaido.jp +hidaka.hokkaido.jp +higashikagura.hokkaido.jp +higashikawa.hokkaido.jp +hiroo.hokkaido.jp +hokuryu.hokkaido.jp +hokuto.hokkaido.jp +honbetsu.hokkaido.jp +horokanai.hokkaido.jp +horonobe.hokkaido.jp +ikeda.hokkaido.jp +imakane.hokkaido.jp +ishikari.hokkaido.jp +iwamizawa.hokkaido.jp +iwanai.hokkaido.jp +kamifurano.hokkaido.jp +kamikawa.hokkaido.jp +kamishihoro.hokkaido.jp +kamisunagawa.hokkaido.jp +kamoenai.hokkaido.jp +kayabe.hokkaido.jp +kembuchi.hokkaido.jp +kikonai.hokkaido.jp +kimobetsu.hokkaido.jp +kitahiroshima.hokkaido.jp +kitami.hokkaido.jp +kiyosato.hokkaido.jp +koshimizu.hokkaido.jp +kunneppu.hokkaido.jp +kuriyama.hokkaido.jp +kuromatsunai.hokkaido.jp +kushiro.hokkaido.jp +kutchan.hokkaido.jp +kyowa.hokkaido.jp +mashike.hokkaido.jp +matsumae.hokkaido.jp +mikasa.hokkaido.jp +minamifurano.hokkaido.jp +mombetsu.hokkaido.jp +moseushi.hokkaido.jp +mukawa.hokkaido.jp +muroran.hokkaido.jp +naie.hokkaido.jp +nakagawa.hokkaido.jp +nakasatsunai.hokkaido.jp +nakatombetsu.hokkaido.jp +nanae.hokkaido.jp +nanporo.hokkaido.jp +nayoro.hokkaido.jp +nemuro.hokkaido.jp +niikappu.hokkaido.jp +niki.hokkaido.jp +nishiokoppe.hokkaido.jp +noboribetsu.hokkaido.jp +numata.hokkaido.jp +obihiro.hokkaido.jp +obira.hokkaido.jp +oketo.hokkaido.jp +okoppe.hokkaido.jp +otaru.hokkaido.jp +otobe.hokkaido.jp +otofuke.hokkaido.jp +otoineppu.hokkaido.jp +oumu.hokkaido.jp +ozora.hokkaido.jp +pippu.hokkaido.jp +rankoshi.hokkaido.jp +rebun.hokkaido.jp +rikubetsu.hokkaido.jp +rishiri.hokkaido.jp +rishirifuji.hokkaido.jp +saroma.hokkaido.jp +sarufutsu.hokkaido.jp +shakotan.hokkaido.jp +shari.hokkaido.jp +shibecha.hokkaido.jp +shibetsu.hokkaido.jp +shikabe.hokkaido.jp +shikaoi.hokkaido.jp +shimamaki.hokkaido.jp +shimizu.hokkaido.jp +shimokawa.hokkaido.jp +shinshinotsu.hokkaido.jp +shintoku.hokkaido.jp +shiranuka.hokkaido.jp +shiraoi.hokkaido.jp +shiriuchi.hokkaido.jp +sobetsu.hokkaido.jp +sunagawa.hokkaido.jp +taiki.hokkaido.jp +takasu.hokkaido.jp +takikawa.hokkaido.jp +takinoue.hokkaido.jp +teshikaga.hokkaido.jp +tobetsu.hokkaido.jp +tohma.hokkaido.jp +tomakomai.hokkaido.jp +tomari.hokkaido.jp +toya.hokkaido.jp +toyako.hokkaido.jp +toyotomi.hokkaido.jp +toyoura.hokkaido.jp +tsubetsu.hokkaido.jp +tsukigata.hokkaido.jp +urakawa.hokkaido.jp +urausu.hokkaido.jp +uryu.hokkaido.jp +utashinai.hokkaido.jp +wakkanai.hokkaido.jp +wassamu.hokkaido.jp +yakumo.hokkaido.jp +yoichi.hokkaido.jp +aioi.hyogo.jp +akashi.hyogo.jp +ako.hyogo.jp +amagasaki.hyogo.jp +aogaki.hyogo.jp +asago.hyogo.jp +ashiya.hyogo.jp +awaji.hyogo.jp +fukusaki.hyogo.jp +goshiki.hyogo.jp +harima.hyogo.jp +himeji.hyogo.jp +ichikawa.hyogo.jp +inagawa.hyogo.jp +itami.hyogo.jp +kakogawa.hyogo.jp +kamigori.hyogo.jp +kamikawa.hyogo.jp +kasai.hyogo.jp +kasuga.hyogo.jp +kawanishi.hyogo.jp +miki.hyogo.jp +minamiawaji.hyogo.jp +nishinomiya.hyogo.jp +nishiwaki.hyogo.jp +ono.hyogo.jp +sanda.hyogo.jp +sannan.hyogo.jp +sasayama.hyogo.jp +sayo.hyogo.jp +shingu.hyogo.jp +shinonsen.hyogo.jp +shiso.hyogo.jp +sumoto.hyogo.jp +taishi.hyogo.jp +taka.hyogo.jp +takarazuka.hyogo.jp +takasago.hyogo.jp +takino.hyogo.jp +tamba.hyogo.jp +tatsuno.hyogo.jp +toyooka.hyogo.jp +yabu.hyogo.jp +yashiro.hyogo.jp +yoka.hyogo.jp +yokawa.hyogo.jp +ami.ibaraki.jp +asahi.ibaraki.jp +bando.ibaraki.jp +chikusei.ibaraki.jp +daigo.ibaraki.jp +fujishiro.ibaraki.jp +hitachi.ibaraki.jp +hitachinaka.ibaraki.jp +hitachiomiya.ibaraki.jp +hitachiota.ibaraki.jp +ibaraki.ibaraki.jp +ina.ibaraki.jp +inashiki.ibaraki.jp +itako.ibaraki.jp +iwama.ibaraki.jp +joso.ibaraki.jp +kamisu.ibaraki.jp +kasama.ibaraki.jp +kashima.ibaraki.jp +kasumigaura.ibaraki.jp +koga.ibaraki.jp +miho.ibaraki.jp +mito.ibaraki.jp +moriya.ibaraki.jp +naka.ibaraki.jp +namegata.ibaraki.jp +oarai.ibaraki.jp +ogawa.ibaraki.jp +omitama.ibaraki.jp +ryugasaki.ibaraki.jp +sakai.ibaraki.jp +sakuragawa.ibaraki.jp +shimodate.ibaraki.jp +shimotsuma.ibaraki.jp +shirosato.ibaraki.jp +sowa.ibaraki.jp +suifu.ibaraki.jp +takahagi.ibaraki.jp +tamatsukuri.ibaraki.jp +tokai.ibaraki.jp +tomobe.ibaraki.jp +tone.ibaraki.jp +toride.ibaraki.jp +tsuchiura.ibaraki.jp +tsukuba.ibaraki.jp +uchihara.ibaraki.jp +ushiku.ibaraki.jp +yachiyo.ibaraki.jp +yamagata.ibaraki.jp +yawara.ibaraki.jp +yuki.ibaraki.jp +anamizu.ishikawa.jp +hakui.ishikawa.jp +hakusan.ishikawa.jp +kaga.ishikawa.jp +kahoku.ishikawa.jp +kanazawa.ishikawa.jp +kawakita.ishikawa.jp +komatsu.ishikawa.jp +nakanoto.ishikawa.jp +nanao.ishikawa.jp +nomi.ishikawa.jp +nonoichi.ishikawa.jp +noto.ishikawa.jp +shika.ishikawa.jp +suzu.ishikawa.jp +tsubata.ishikawa.jp +tsurugi.ishikawa.jp +uchinada.ishikawa.jp +wajima.ishikawa.jp +fudai.iwate.jp +fujisawa.iwate.jp +hanamaki.iwate.jp +hiraizumi.iwate.jp +hirono.iwate.jp +ichinohe.iwate.jp +ichinoseki.iwate.jp +iwaizumi.iwate.jp +iwate.iwate.jp +joboji.iwate.jp +kamaishi.iwate.jp +kanegasaki.iwate.jp +karumai.iwate.jp +kawai.iwate.jp +kitakami.iwate.jp +kuji.iwate.jp +kunohe.iwate.jp +kuzumaki.iwate.jp +miyako.iwate.jp +mizusawa.iwate.jp +morioka.iwate.jp +ninohe.iwate.jp +noda.iwate.jp +ofunato.iwate.jp +oshu.iwate.jp +otsuchi.iwate.jp +rikuzentakata.iwate.jp +shiwa.iwate.jp +shizukuishi.iwate.jp +sumita.iwate.jp +tanohata.iwate.jp +tono.iwate.jp +yahaba.iwate.jp +yamada.iwate.jp +ayagawa.kagawa.jp +higashikagawa.kagawa.jp +kanonji.kagawa.jp +kotohira.kagawa.jp +manno.kagawa.jp +marugame.kagawa.jp +mitoyo.kagawa.jp +naoshima.kagawa.jp +sanuki.kagawa.jp +tadotsu.kagawa.jp +takamatsu.kagawa.jp +tonosho.kagawa.jp +uchinomi.kagawa.jp +utazu.kagawa.jp +zentsuji.kagawa.jp +akune.kagoshima.jp +amami.kagoshima.jp +hioki.kagoshima.jp +isa.kagoshima.jp +isen.kagoshima.jp +izumi.kagoshima.jp +kagoshima.kagoshima.jp +kanoya.kagoshima.jp +kawanabe.kagoshima.jp +kinko.kagoshima.jp +kouyama.kagoshima.jp +makurazaki.kagoshima.jp +matsumoto.kagoshima.jp +minamitane.kagoshima.jp +nakatane.kagoshima.jp +nishinoomote.kagoshima.jp +satsumasendai.kagoshima.jp +soo.kagoshima.jp +tarumizu.kagoshima.jp +yusui.kagoshima.jp +aikawa.kanagawa.jp +atsugi.kanagawa.jp +ayase.kanagawa.jp +chigasaki.kanagawa.jp +ebina.kanagawa.jp +fujisawa.kanagawa.jp +hadano.kanagawa.jp +hakone.kanagawa.jp +hiratsuka.kanagawa.jp +isehara.kanagawa.jp +kaisei.kanagawa.jp +kamakura.kanagawa.jp +kiyokawa.kanagawa.jp +matsuda.kanagawa.jp +minamiashigara.kanagawa.jp +miura.kanagawa.jp +nakai.kanagawa.jp +ninomiya.kanagawa.jp +odawara.kanagawa.jp +oi.kanagawa.jp +oiso.kanagawa.jp +sagamihara.kanagawa.jp +samukawa.kanagawa.jp +tsukui.kanagawa.jp +yamakita.kanagawa.jp +yamato.kanagawa.jp +yokosuka.kanagawa.jp +yugawara.kanagawa.jp +zama.kanagawa.jp +zushi.kanagawa.jp +aki.kochi.jp +geisei.kochi.jp +hidaka.kochi.jp +higashitsuno.kochi.jp +ino.kochi.jp +kagami.kochi.jp +kami.kochi.jp +kitagawa.kochi.jp +kochi.kochi.jp +mihara.kochi.jp +motoyama.kochi.jp +muroto.kochi.jp +nahari.kochi.jp +nakamura.kochi.jp +nankoku.kochi.jp +nishitosa.kochi.jp +niyodogawa.kochi.jp +ochi.kochi.jp +okawa.kochi.jp +otoyo.kochi.jp +otsuki.kochi.jp +sakawa.kochi.jp +sukumo.kochi.jp +susaki.kochi.jp +tosa.kochi.jp +tosashimizu.kochi.jp +toyo.kochi.jp +tsuno.kochi.jp +umaji.kochi.jp +yasuda.kochi.jp +yusuhara.kochi.jp +amakusa.kumamoto.jp +arao.kumamoto.jp +aso.kumamoto.jp +choyo.kumamoto.jp +gyokuto.kumamoto.jp +kamiamakusa.kumamoto.jp +kikuchi.kumamoto.jp +kumamoto.kumamoto.jp +mashiki.kumamoto.jp +mifune.kumamoto.jp +minamata.kumamoto.jp +minamioguni.kumamoto.jp +nagasu.kumamoto.jp +nishihara.kumamoto.jp +oguni.kumamoto.jp +ozu.kumamoto.jp +sumoto.kumamoto.jp +takamori.kumamoto.jp +uki.kumamoto.jp +uto.kumamoto.jp +yamaga.kumamoto.jp +yamato.kumamoto.jp +yatsushiro.kumamoto.jp +ayabe.kyoto.jp +fukuchiyama.kyoto.jp +higashiyama.kyoto.jp +ide.kyoto.jp +ine.kyoto.jp +joyo.kyoto.jp +kameoka.kyoto.jp +kamo.kyoto.jp +kita.kyoto.jp +kizu.kyoto.jp +kumiyama.kyoto.jp +kyotamba.kyoto.jp +kyotanabe.kyoto.jp +kyotango.kyoto.jp +maizuru.kyoto.jp +minami.kyoto.jp +minamiyamashiro.kyoto.jp +miyazu.kyoto.jp +muko.kyoto.jp +nagaokakyo.kyoto.jp +nakagyo.kyoto.jp +nantan.kyoto.jp +oyamazaki.kyoto.jp +sakyo.kyoto.jp +seika.kyoto.jp +tanabe.kyoto.jp +uji.kyoto.jp +ujitawara.kyoto.jp +wazuka.kyoto.jp +yamashina.kyoto.jp +yawata.kyoto.jp +asahi.mie.jp +inabe.mie.jp +ise.mie.jp +kameyama.mie.jp +kawagoe.mie.jp +kiho.mie.jp +kisosaki.mie.jp +kiwa.mie.jp +komono.mie.jp +kumano.mie.jp +kuwana.mie.jp +matsusaka.mie.jp +meiwa.mie.jp +mihama.mie.jp +minamiise.mie.jp +misugi.mie.jp +miyama.mie.jp +nabari.mie.jp +shima.mie.jp +suzuka.mie.jp +tado.mie.jp +taiki.mie.jp +taki.mie.jp +tamaki.mie.jp +toba.mie.jp +tsu.mie.jp +udono.mie.jp +ureshino.mie.jp +watarai.mie.jp +yokkaichi.mie.jp +furukawa.miyagi.jp +higashimatsushima.miyagi.jp +ishinomaki.miyagi.jp +iwanuma.miyagi.jp +kakuda.miyagi.jp +kami.miyagi.jp +kawasaki.miyagi.jp +marumori.miyagi.jp +matsushima.miyagi.jp +minamisanriku.miyagi.jp +misato.miyagi.jp +murata.miyagi.jp +natori.miyagi.jp +ogawara.miyagi.jp +ohira.miyagi.jp +onagawa.miyagi.jp +osaki.miyagi.jp +rifu.miyagi.jp +semine.miyagi.jp +shibata.miyagi.jp +shichikashuku.miyagi.jp +shikama.miyagi.jp +shiogama.miyagi.jp +shiroishi.miyagi.jp +tagajo.miyagi.jp +taiwa.miyagi.jp +tome.miyagi.jp +tomiya.miyagi.jp +wakuya.miyagi.jp +watari.miyagi.jp +yamamoto.miyagi.jp +zao.miyagi.jp +aya.miyazaki.jp +ebino.miyazaki.jp +gokase.miyazaki.jp +hyuga.miyazaki.jp +kadogawa.miyazaki.jp +kawaminami.miyazaki.jp +kijo.miyazaki.jp +kitagawa.miyazaki.jp +kitakata.miyazaki.jp +kitaura.miyazaki.jp +kobayashi.miyazaki.jp +kunitomi.miyazaki.jp +kushima.miyazaki.jp +mimata.miyazaki.jp +miyakonojo.miyazaki.jp +miyazaki.miyazaki.jp +morotsuka.miyazaki.jp +nichinan.miyazaki.jp +nishimera.miyazaki.jp +nobeoka.miyazaki.jp +saito.miyazaki.jp +shiiba.miyazaki.jp +shintomi.miyazaki.jp +takaharu.miyazaki.jp +takanabe.miyazaki.jp +takazaki.miyazaki.jp +tsuno.miyazaki.jp +achi.nagano.jp +agematsu.nagano.jp +anan.nagano.jp +aoki.nagano.jp +asahi.nagano.jp +azumino.nagano.jp +chikuhoku.nagano.jp +chikuma.nagano.jp +chino.nagano.jp +fujimi.nagano.jp +hakuba.nagano.jp +hara.nagano.jp +hiraya.nagano.jp +iida.nagano.jp +iijima.nagano.jp +iiyama.nagano.jp +iizuna.nagano.jp +ikeda.nagano.jp +ikusaka.nagano.jp +ina.nagano.jp +karuizawa.nagano.jp +kawakami.nagano.jp +kiso.nagano.jp +kisofukushima.nagano.jp +kitaaiki.nagano.jp +komagane.nagano.jp +komoro.nagano.jp +matsukawa.nagano.jp +matsumoto.nagano.jp +miasa.nagano.jp +minamiaiki.nagano.jp +minamimaki.nagano.jp +minamiminowa.nagano.jp +minowa.nagano.jp +miyada.nagano.jp +miyota.nagano.jp +mochizuki.nagano.jp +nagano.nagano.jp +nagawa.nagano.jp +nagiso.nagano.jp +nakagawa.nagano.jp +nakano.nagano.jp +nozawaonsen.nagano.jp +obuse.nagano.jp +ogawa.nagano.jp +okaya.nagano.jp +omachi.nagano.jp +omi.nagano.jp +ookuwa.nagano.jp +ooshika.nagano.jp +otaki.nagano.jp +otari.nagano.jp +sakae.nagano.jp +sakaki.nagano.jp +saku.nagano.jp +sakuho.nagano.jp +shimosuwa.nagano.jp +shinanomachi.nagano.jp +shiojiri.nagano.jp +suwa.nagano.jp +suzaka.nagano.jp +takagi.nagano.jp +takamori.nagano.jp +takayama.nagano.jp +tateshina.nagano.jp +tatsuno.nagano.jp +togakushi.nagano.jp +togura.nagano.jp +tomi.nagano.jp +ueda.nagano.jp +wada.nagano.jp +yamagata.nagano.jp +yamanouchi.nagano.jp +yasaka.nagano.jp +yasuoka.nagano.jp +chijiwa.nagasaki.jp +futsu.nagasaki.jp +goto.nagasaki.jp +hasami.nagasaki.jp +hirado.nagasaki.jp +iki.nagasaki.jp +isahaya.nagasaki.jp +kawatana.nagasaki.jp +kuchinotsu.nagasaki.jp +matsuura.nagasaki.jp +nagasaki.nagasaki.jp +obama.nagasaki.jp +omura.nagasaki.jp +oseto.nagasaki.jp +saikai.nagasaki.jp +sasebo.nagasaki.jp +seihi.nagasaki.jp +shimabara.nagasaki.jp +shinkamigoto.nagasaki.jp +togitsu.nagasaki.jp +tsushima.nagasaki.jp +unzen.nagasaki.jp +ando.nara.jp +gose.nara.jp +heguri.nara.jp +higashiyoshino.nara.jp +ikaruga.nara.jp +ikoma.nara.jp +kamikitayama.nara.jp +kanmaki.nara.jp +kashiba.nara.jp +kashihara.nara.jp +katsuragi.nara.jp +kawai.nara.jp +kawakami.nara.jp +kawanishi.nara.jp +koryo.nara.jp +kurotaki.nara.jp +mitsue.nara.jp +miyake.nara.jp +nara.nara.jp +nosegawa.nara.jp +oji.nara.jp +ouda.nara.jp +oyodo.nara.jp +sakurai.nara.jp +sango.nara.jp +shimoichi.nara.jp +shimokitayama.nara.jp +shinjo.nara.jp +soni.nara.jp +takatori.nara.jp +tawaramoto.nara.jp +tenkawa.nara.jp +tenri.nara.jp +uda.nara.jp +yamatokoriyama.nara.jp +yamatotakada.nara.jp +yamazoe.nara.jp +yoshino.nara.jp +aga.niigata.jp +agano.niigata.jp +gosen.niigata.jp +itoigawa.niigata.jp +izumozaki.niigata.jp +joetsu.niigata.jp +kamo.niigata.jp +kariwa.niigata.jp +kashiwazaki.niigata.jp +minamiuonuma.niigata.jp +mitsuke.niigata.jp +muika.niigata.jp +murakami.niigata.jp +myoko.niigata.jp +nagaoka.niigata.jp +niigata.niigata.jp +ojiya.niigata.jp +omi.niigata.jp +sado.niigata.jp +sanjo.niigata.jp +seiro.niigata.jp +seirou.niigata.jp +sekikawa.niigata.jp +shibata.niigata.jp +tagami.niigata.jp +tainai.niigata.jp +tochio.niigata.jp +tokamachi.niigata.jp +tsubame.niigata.jp +tsunan.niigata.jp +uonuma.niigata.jp +yahiko.niigata.jp +yoita.niigata.jp +yuzawa.niigata.jp +beppu.oita.jp +bungoono.oita.jp +bungotakada.oita.jp +hasama.oita.jp +hiji.oita.jp +himeshima.oita.jp +hita.oita.jp +kamitsue.oita.jp +kokonoe.oita.jp +kuju.oita.jp +kunisaki.oita.jp +kusu.oita.jp +oita.oita.jp +saiki.oita.jp +taketa.oita.jp +tsukumi.oita.jp +usa.oita.jp +usuki.oita.jp +yufu.oita.jp +akaiwa.okayama.jp +asakuchi.okayama.jp +bizen.okayama.jp +hayashima.okayama.jp +ibara.okayama.jp +kagamino.okayama.jp +kasaoka.okayama.jp +kibichuo.okayama.jp +kumenan.okayama.jp +kurashiki.okayama.jp +maniwa.okayama.jp +misaki.okayama.jp +nagi.okayama.jp +niimi.okayama.jp +nishiawakura.okayama.jp +okayama.okayama.jp +satosho.okayama.jp +setouchi.okayama.jp +shinjo.okayama.jp +shoo.okayama.jp +soja.okayama.jp +takahashi.okayama.jp +tamano.okayama.jp +tsuyama.okayama.jp +wake.okayama.jp +yakage.okayama.jp +aguni.okinawa.jp +ginowan.okinawa.jp +ginoza.okinawa.jp +gushikami.okinawa.jp +haebaru.okinawa.jp +higashi.okinawa.jp +hirara.okinawa.jp +iheya.okinawa.jp +ishigaki.okinawa.jp +ishikawa.okinawa.jp +itoman.okinawa.jp +izena.okinawa.jp +kadena.okinawa.jp +kin.okinawa.jp +kitadaito.okinawa.jp +kitanakagusuku.okinawa.jp +kumejima.okinawa.jp +kunigami.okinawa.jp +minamidaito.okinawa.jp +motobu.okinawa.jp +nago.okinawa.jp +naha.okinawa.jp +nakagusuku.okinawa.jp +nakijin.okinawa.jp +nanjo.okinawa.jp +nishihara.okinawa.jp +ogimi.okinawa.jp +okinawa.okinawa.jp +onna.okinawa.jp +shimoji.okinawa.jp +taketomi.okinawa.jp +tarama.okinawa.jp +tokashiki.okinawa.jp +tomigusuku.okinawa.jp +tonaki.okinawa.jp +urasoe.okinawa.jp +uruma.okinawa.jp +yaese.okinawa.jp +yomitan.okinawa.jp +yonabaru.okinawa.jp +yonaguni.okinawa.jp +zamami.okinawa.jp +abeno.osaka.jp +chihayaakasaka.osaka.jp +chuo.osaka.jp +daito.osaka.jp +fujiidera.osaka.jp +habikino.osaka.jp +hannan.osaka.jp +higashiosaka.osaka.jp +higashisumiyoshi.osaka.jp +higashiyodogawa.osaka.jp +hirakata.osaka.jp +ibaraki.osaka.jp +ikeda.osaka.jp +izumi.osaka.jp +izumiotsu.osaka.jp +izumisano.osaka.jp +kadoma.osaka.jp +kaizuka.osaka.jp +kanan.osaka.jp +kashiwara.osaka.jp +katano.osaka.jp +kawachinagano.osaka.jp +kishiwada.osaka.jp +kita.osaka.jp +kumatori.osaka.jp +matsubara.osaka.jp +minato.osaka.jp +minoh.osaka.jp +misaki.osaka.jp +moriguchi.osaka.jp +neyagawa.osaka.jp +nishi.osaka.jp +nose.osaka.jp +osakasayama.osaka.jp +sakai.osaka.jp +sayama.osaka.jp +sennan.osaka.jp +settsu.osaka.jp +shijonawate.osaka.jp +shimamoto.osaka.jp +suita.osaka.jp +tadaoka.osaka.jp +taishi.osaka.jp +tajiri.osaka.jp +takaishi.osaka.jp +takatsuki.osaka.jp +tondabayashi.osaka.jp +toyonaka.osaka.jp +toyono.osaka.jp +yao.osaka.jp +ariake.saga.jp +arita.saga.jp +fukudomi.saga.jp +genkai.saga.jp +hamatama.saga.jp +hizen.saga.jp +imari.saga.jp +kamimine.saga.jp +kanzaki.saga.jp +karatsu.saga.jp +kashima.saga.jp +kitagata.saga.jp +kitahata.saga.jp +kiyama.saga.jp +kouhoku.saga.jp +kyuragi.saga.jp +nishiarita.saga.jp +ogi.saga.jp +omachi.saga.jp +ouchi.saga.jp +saga.saga.jp +shiroishi.saga.jp +taku.saga.jp +tara.saga.jp +tosu.saga.jp +yoshinogari.saga.jp +arakawa.saitama.jp +asaka.saitama.jp +chichibu.saitama.jp +fujimi.saitama.jp +fujimino.saitama.jp +fukaya.saitama.jp +hanno.saitama.jp +hanyu.saitama.jp +hasuda.saitama.jp +hatogaya.saitama.jp +hatoyama.saitama.jp +hidaka.saitama.jp +higashichichibu.saitama.jp +higashimatsuyama.saitama.jp +honjo.saitama.jp +ina.saitama.jp +iruma.saitama.jp +iwatsuki.saitama.jp +kamiizumi.saitama.jp +kamikawa.saitama.jp +kamisato.saitama.jp +kasukabe.saitama.jp +kawagoe.saitama.jp +kawaguchi.saitama.jp +kawajima.saitama.jp +kazo.saitama.jp +kitamoto.saitama.jp +koshigaya.saitama.jp +kounosu.saitama.jp +kuki.saitama.jp +kumagaya.saitama.jp +matsubushi.saitama.jp +minano.saitama.jp +misato.saitama.jp +miyashiro.saitama.jp +miyoshi.saitama.jp +moroyama.saitama.jp +nagatoro.saitama.jp +namegawa.saitama.jp +niiza.saitama.jp +ogano.saitama.jp +ogawa.saitama.jp +ogose.saitama.jp +okegawa.saitama.jp +omiya.saitama.jp +otaki.saitama.jp +ranzan.saitama.jp +ryokami.saitama.jp +saitama.saitama.jp +sakado.saitama.jp +satte.saitama.jp +sayama.saitama.jp +shiki.saitama.jp +shiraoka.saitama.jp +soka.saitama.jp +sugito.saitama.jp +toda.saitama.jp +tokigawa.saitama.jp +tokorozawa.saitama.jp +tsurugashima.saitama.jp +urawa.saitama.jp +warabi.saitama.jp +yashio.saitama.jp +yokoze.saitama.jp +yono.saitama.jp +yorii.saitama.jp +yoshida.saitama.jp +yoshikawa.saitama.jp +yoshimi.saitama.jp +aisho.shiga.jp +gamo.shiga.jp +higashiomi.shiga.jp +hikone.shiga.jp +koka.shiga.jp +konan.shiga.jp +kosei.shiga.jp +koto.shiga.jp +kusatsu.shiga.jp +maibara.shiga.jp +moriyama.shiga.jp +nagahama.shiga.jp +nishiazai.shiga.jp +notogawa.shiga.jp +omihachiman.shiga.jp +otsu.shiga.jp +ritto.shiga.jp +ryuoh.shiga.jp +takashima.shiga.jp +takatsuki.shiga.jp +torahime.shiga.jp +toyosato.shiga.jp +yasu.shiga.jp +akagi.shimane.jp +ama.shimane.jp +gotsu.shimane.jp +hamada.shimane.jp +higashiizumo.shimane.jp +hikawa.shimane.jp +hikimi.shimane.jp +izumo.shimane.jp +kakinoki.shimane.jp +masuda.shimane.jp +matsue.shimane.jp +misato.shimane.jp +nishinoshima.shimane.jp +ohda.shimane.jp +okinoshima.shimane.jp +okuizumo.shimane.jp +shimane.shimane.jp +tamayu.shimane.jp +tsuwano.shimane.jp +unnan.shimane.jp +yakumo.shimane.jp +yasugi.shimane.jp +yatsuka.shimane.jp +arai.shizuoka.jp +atami.shizuoka.jp +fuji.shizuoka.jp +fujieda.shizuoka.jp +fujikawa.shizuoka.jp +fujinomiya.shizuoka.jp +fukuroi.shizuoka.jp +gotemba.shizuoka.jp +haibara.shizuoka.jp +hamamatsu.shizuoka.jp +higashiizu.shizuoka.jp +ito.shizuoka.jp +iwata.shizuoka.jp +izu.shizuoka.jp +izunokuni.shizuoka.jp +kakegawa.shizuoka.jp +kannami.shizuoka.jp +kawanehon.shizuoka.jp +kawazu.shizuoka.jp +kikugawa.shizuoka.jp +kosai.shizuoka.jp +makinohara.shizuoka.jp +matsuzaki.shizuoka.jp +minamiizu.shizuoka.jp +mishima.shizuoka.jp +morimachi.shizuoka.jp +nishiizu.shizuoka.jp +numazu.shizuoka.jp +omaezaki.shizuoka.jp +shimada.shizuoka.jp +shimizu.shizuoka.jp +shimoda.shizuoka.jp +shizuoka.shizuoka.jp +susono.shizuoka.jp +yaizu.shizuoka.jp +yoshida.shizuoka.jp +ashikaga.tochigi.jp +bato.tochigi.jp +haga.tochigi.jp +ichikai.tochigi.jp +iwafune.tochigi.jp +kaminokawa.tochigi.jp +kanuma.tochigi.jp +karasuyama.tochigi.jp +kuroiso.tochigi.jp +mashiko.tochigi.jp +mibu.tochigi.jp +moka.tochigi.jp +motegi.tochigi.jp +nasu.tochigi.jp +nasushiobara.tochigi.jp +nikko.tochigi.jp +nishikata.tochigi.jp +nogi.tochigi.jp +ohira.tochigi.jp +ohtawara.tochigi.jp +oyama.tochigi.jp +sakura.tochigi.jp +sano.tochigi.jp +shimotsuke.tochigi.jp +shioya.tochigi.jp +takanezawa.tochigi.jp +tochigi.tochigi.jp +tsuga.tochigi.jp +ujiie.tochigi.jp +utsunomiya.tochigi.jp +yaita.tochigi.jp +aizumi.tokushima.jp +anan.tokushima.jp +ichiba.tokushima.jp +itano.tokushima.jp +kainan.tokushima.jp +komatsushima.tokushima.jp +matsushige.tokushima.jp +mima.tokushima.jp +minami.tokushima.jp +miyoshi.tokushima.jp +mugi.tokushima.jp +nakagawa.tokushima.jp +naruto.tokushima.jp +sanagochi.tokushima.jp +shishikui.tokushima.jp +tokushima.tokushima.jp +wajiki.tokushima.jp +adachi.tokyo.jp +akiruno.tokyo.jp +akishima.tokyo.jp +aogashima.tokyo.jp +arakawa.tokyo.jp +bunkyo.tokyo.jp +chiyoda.tokyo.jp +chofu.tokyo.jp +chuo.tokyo.jp +edogawa.tokyo.jp +fuchu.tokyo.jp +fussa.tokyo.jp +hachijo.tokyo.jp +hachioji.tokyo.jp +hamura.tokyo.jp +higashikurume.tokyo.jp +higashimurayama.tokyo.jp +higashiyamato.tokyo.jp +hino.tokyo.jp +hinode.tokyo.jp +hinohara.tokyo.jp +inagi.tokyo.jp +itabashi.tokyo.jp +katsushika.tokyo.jp +kita.tokyo.jp +kiyose.tokyo.jp +kodaira.tokyo.jp +koganei.tokyo.jp +kokubunji.tokyo.jp +komae.tokyo.jp +koto.tokyo.jp +kouzushima.tokyo.jp +kunitachi.tokyo.jp +machida.tokyo.jp +meguro.tokyo.jp +minato.tokyo.jp +mitaka.tokyo.jp +mizuho.tokyo.jp +musashimurayama.tokyo.jp +musashino.tokyo.jp +nakano.tokyo.jp +nerima.tokyo.jp +ogasawara.tokyo.jp +okutama.tokyo.jp +ome.tokyo.jp +oshima.tokyo.jp +ota.tokyo.jp +setagaya.tokyo.jp +shibuya.tokyo.jp +shinagawa.tokyo.jp +shinjuku.tokyo.jp +suginami.tokyo.jp +sumida.tokyo.jp +tachikawa.tokyo.jp +taito.tokyo.jp +tama.tokyo.jp +toshima.tokyo.jp +chizu.tottori.jp +hino.tottori.jp +kawahara.tottori.jp +koge.tottori.jp +kotoura.tottori.jp +misasa.tottori.jp +nanbu.tottori.jp +nichinan.tottori.jp +sakaiminato.tottori.jp +tottori.tottori.jp +wakasa.tottori.jp +yazu.tottori.jp +yonago.tottori.jp +asahi.toyama.jp +fuchu.toyama.jp +fukumitsu.toyama.jp +funahashi.toyama.jp +himi.toyama.jp +imizu.toyama.jp +inami.toyama.jp +johana.toyama.jp +kamiichi.toyama.jp +kurobe.toyama.jp +nakaniikawa.toyama.jp +namerikawa.toyama.jp +nanto.toyama.jp +nyuzen.toyama.jp +oyabe.toyama.jp +taira.toyama.jp +takaoka.toyama.jp +tateyama.toyama.jp +toga.toyama.jp +tonami.toyama.jp +toyama.toyama.jp +unazuki.toyama.jp +uozu.toyama.jp +yamada.toyama.jp +arida.wakayama.jp +aridagawa.wakayama.jp +gobo.wakayama.jp +hashimoto.wakayama.jp +hidaka.wakayama.jp +hirogawa.wakayama.jp +inami.wakayama.jp +iwade.wakayama.jp +kainan.wakayama.jp +kamitonda.wakayama.jp +katsuragi.wakayama.jp +kimino.wakayama.jp +kinokawa.wakayama.jp +kitayama.wakayama.jp +koya.wakayama.jp +koza.wakayama.jp +kozagawa.wakayama.jp +kudoyama.wakayama.jp +kushimoto.wakayama.jp +mihama.wakayama.jp +misato.wakayama.jp +nachikatsuura.wakayama.jp +shingu.wakayama.jp +shirahama.wakayama.jp +taiji.wakayama.jp +tanabe.wakayama.jp +wakayama.wakayama.jp +yuasa.wakayama.jp +yura.wakayama.jp +asahi.yamagata.jp +funagata.yamagata.jp +higashine.yamagata.jp +iide.yamagata.jp +kahoku.yamagata.jp +kaminoyama.yamagata.jp +kaneyama.yamagata.jp +kawanishi.yamagata.jp +mamurogawa.yamagata.jp +mikawa.yamagata.jp +murayama.yamagata.jp +nagai.yamagata.jp +nakayama.yamagata.jp +nanyo.yamagata.jp +nishikawa.yamagata.jp +obanazawa.yamagata.jp +oe.yamagata.jp +oguni.yamagata.jp +ohkura.yamagata.jp +oishida.yamagata.jp +sagae.yamagata.jp +sakata.yamagata.jp +sakegawa.yamagata.jp +shinjo.yamagata.jp +shirataka.yamagata.jp +shonai.yamagata.jp +takahata.yamagata.jp +tendo.yamagata.jp +tozawa.yamagata.jp +tsuruoka.yamagata.jp +yamagata.yamagata.jp +yamanobe.yamagata.jp +yonezawa.yamagata.jp +yuza.yamagata.jp +abu.yamaguchi.jp +hagi.yamaguchi.jp +hikari.yamaguchi.jp +hofu.yamaguchi.jp +iwakuni.yamaguchi.jp +kudamatsu.yamaguchi.jp +mitou.yamaguchi.jp +nagato.yamaguchi.jp +oshima.yamaguchi.jp +shimonoseki.yamaguchi.jp +shunan.yamaguchi.jp +tabuse.yamaguchi.jp +tokuyama.yamaguchi.jp +toyota.yamaguchi.jp +ube.yamaguchi.jp +yuu.yamaguchi.jp +chuo.yamanashi.jp +doshi.yamanashi.jp +fuefuki.yamanashi.jp +fujikawa.yamanashi.jp +fujikawaguchiko.yamanashi.jp +fujiyoshida.yamanashi.jp +hayakawa.yamanashi.jp +hokuto.yamanashi.jp +ichikawamisato.yamanashi.jp +kai.yamanashi.jp +kofu.yamanashi.jp +koshu.yamanashi.jp +kosuge.yamanashi.jp +minami-alps.yamanashi.jp +minobu.yamanashi.jp +nakamichi.yamanashi.jp +nanbu.yamanashi.jp +narusawa.yamanashi.jp +nirasaki.yamanashi.jp +nishikatsura.yamanashi.jp +oshino.yamanashi.jp +otsuki.yamanashi.jp +showa.yamanashi.jp +tabayama.yamanashi.jp +tsuru.yamanashi.jp +uenohara.yamanashi.jp +yamanakako.yamanashi.jp +yamanashi.yamanashi.jp + +// ke : http://www.kenic.or.ke/index.php?option=com_content&task=view&id=117&Itemid=145 +*.ke + +// kg : http://www.domain.kg/dmn_n.html +kg +org.kg +net.kg +com.kg +edu.kg +gov.kg +mil.kg + +// kh : http://www.mptc.gov.kh/dns_registration.htm +*.kh + +// ki : http://www.ki/dns/index.html +ki +edu.ki +biz.ki +net.ki +org.ki +gov.ki +info.ki +com.ki + +// km : https://en.wikipedia.org/wiki/.km +// http://www.domaine.km/documents/charte.doc +km +org.km +nom.km +gov.km +prd.km +tm.km +edu.km +mil.km +ass.km +com.km +// These are only mentioned as proposed suggestions at domaine.km, but +// https://en.wikipedia.org/wiki/.km says they're available for registration: +coop.km +asso.km +presse.km +medecin.km +notaires.km +pharmaciens.km +veterinaire.km +gouv.km + +// kn : https://en.wikipedia.org/wiki/.kn +// http://www.dot.kn/domainRules.html +kn +net.kn +org.kn +edu.kn +gov.kn + +// kp : http://www.kcce.kp/en_index.php +kp +com.kp +edu.kp +gov.kp +org.kp +rep.kp +tra.kp + +// kr : https://en.wikipedia.org/wiki/.kr +// see also: http://domain.nida.or.kr/eng/registration.jsp +kr +ac.kr +co.kr +es.kr +go.kr +hs.kr +kg.kr +mil.kr +ms.kr +ne.kr +or.kr +pe.kr +re.kr +sc.kr +// kr geographical names +busan.kr +chungbuk.kr +chungnam.kr +daegu.kr +daejeon.kr +gangwon.kr +gwangju.kr +gyeongbuk.kr +gyeonggi.kr +gyeongnam.kr +incheon.kr +jeju.kr +jeonbuk.kr +jeonnam.kr +seoul.kr +ulsan.kr + +// kw : https://en.wikipedia.org/wiki/.kw +*.kw + +// ky : http://www.icta.ky/da_ky_reg_dom.php +// Confirmed by registry 2008-06-17 +ky +edu.ky +gov.ky +com.ky +org.ky +net.ky + +// kz : https://en.wikipedia.org/wiki/.kz +// see also: http://www.nic.kz/rules/index.jsp +kz +org.kz +edu.kz +net.kz +gov.kz +mil.kz +com.kz + +// la : https://en.wikipedia.org/wiki/.la +// Submitted by registry +la +int.la +net.la +info.la +edu.la +gov.la +per.la +com.la +org.la + +// lb : https://en.wikipedia.org/wiki/.lb +// Submitted by registry +lb +com.lb +edu.lb +gov.lb +net.lb +org.lb + +// lc : https://en.wikipedia.org/wiki/.lc +// see also: http://www.nic.lc/rules.htm +lc +com.lc +net.lc +co.lc +org.lc +edu.lc +gov.lc + +// li : https://en.wikipedia.org/wiki/.li +li + +// lk : http://www.nic.lk/seclevpr.html +lk +gov.lk +sch.lk +net.lk +int.lk +com.lk +org.lk +edu.lk +ngo.lk +soc.lk +web.lk +ltd.lk +assn.lk +grp.lk +hotel.lk +ac.lk + +// lr : http://psg.com/dns/lr/lr.txt +// Submitted by registry +lr +com.lr +edu.lr +gov.lr +org.lr +net.lr + +// ls : https://en.wikipedia.org/wiki/.ls +ls +co.ls +org.ls + +// lt : https://en.wikipedia.org/wiki/.lt +lt +// gov.lt : http://www.gov.lt/index_en.php +gov.lt + +// lu : http://www.dns.lu/en/ +lu + +// lv : http://www.nic.lv/DNS/En/generic.php +lv +com.lv +edu.lv +gov.lv +org.lv +mil.lv +id.lv +net.lv +asn.lv +conf.lv + +// ly : http://www.nic.ly/regulations.php +ly +com.ly +net.ly +gov.ly +plc.ly +edu.ly +sch.ly +med.ly +org.ly +id.ly + +// ma : https://en.wikipedia.org/wiki/.ma +// http://www.anrt.ma/fr/admin/download/upload/file_fr782.pdf +ma +co.ma +net.ma +gov.ma +org.ma +ac.ma +press.ma + +// mc : http://www.nic.mc/ +mc +tm.mc +asso.mc + +// md : https://en.wikipedia.org/wiki/.md +md + +// me : https://en.wikipedia.org/wiki/.me +me +co.me +net.me +org.me +edu.me +ac.me +gov.me +its.me +priv.me + +// mg : http://nic.mg/nicmg/?page_id=39 +mg +org.mg +nom.mg +gov.mg +prd.mg +tm.mg +edu.mg +mil.mg +com.mg +co.mg + +// mh : https://en.wikipedia.org/wiki/.mh +mh + +// mil : https://en.wikipedia.org/wiki/.mil +mil + +// mk : https://en.wikipedia.org/wiki/.mk +// see also: http://dns.marnet.net.mk/postapka.php +mk +com.mk +org.mk +net.mk +edu.mk +gov.mk +inf.mk +name.mk + +// ml : http://www.gobin.info/domainname/ml-template.doc +// see also: https://en.wikipedia.org/wiki/.ml +ml +com.ml +edu.ml +gouv.ml +gov.ml +net.ml +org.ml +presse.ml + +// mm : https://en.wikipedia.org/wiki/.mm +*.mm + +// mn : https://en.wikipedia.org/wiki/.mn +mn +gov.mn +edu.mn +org.mn + +// mo : http://www.monic.net.mo/ +mo +com.mo +net.mo +org.mo +edu.mo +gov.mo + +// mobi : https://en.wikipedia.org/wiki/.mobi +mobi + +// mp : http://www.dot.mp/ +// Confirmed by registry 2008-06-17 +mp + +// mq : https://en.wikipedia.org/wiki/.mq +mq + +// mr : https://en.wikipedia.org/wiki/.mr +mr +gov.mr + +// ms : http://www.nic.ms/pdf/MS_Domain_Name_Rules.pdf +ms +com.ms +edu.ms +gov.ms +net.ms +org.ms + +// mt : https://www.nic.org.mt/go/policy +// Submitted by registry +mt +com.mt +edu.mt +net.mt +org.mt + +// mu : https://en.wikipedia.org/wiki/.mu +mu +com.mu +net.mu +org.mu +gov.mu +ac.mu +co.mu +or.mu + +// museum : http://about.museum/naming/ +// http://index.museum/ +museum +academy.museum +agriculture.museum +air.museum +airguard.museum +alabama.museum +alaska.museum +amber.museum +ambulance.museum +american.museum +americana.museum +americanantiques.museum +americanart.museum +amsterdam.museum +and.museum +annefrank.museum +anthro.museum +anthropology.museum +antiques.museum +aquarium.museum +arboretum.museum +archaeological.museum +archaeology.museum +architecture.museum +art.museum +artanddesign.museum +artcenter.museum +artdeco.museum +arteducation.museum +artgallery.museum +arts.museum +artsandcrafts.museum +asmatart.museum +assassination.museum +assisi.museum +association.museum +astronomy.museum +atlanta.museum +austin.museum +australia.museum +automotive.museum +aviation.museum +axis.museum +badajoz.museum +baghdad.museum +bahn.museum +bale.museum +baltimore.museum +barcelona.museum +baseball.museum +basel.museum +baths.museum +bauern.museum +beauxarts.museum +beeldengeluid.museum +bellevue.museum +bergbau.museum +berkeley.museum +berlin.museum +bern.museum +bible.museum +bilbao.museum +bill.museum +birdart.museum +birthplace.museum +bonn.museum +boston.museum +botanical.museum +botanicalgarden.museum +botanicgarden.museum +botany.museum +brandywinevalley.museum +brasil.museum +bristol.museum +british.museum +britishcolumbia.museum +broadcast.museum +brunel.museum +brussel.museum +brussels.museum +bruxelles.museum +building.museum +burghof.museum +bus.museum +bushey.museum +cadaques.museum +california.museum +cambridge.museum +can.museum +canada.museum +capebreton.museum +carrier.museum +cartoonart.museum +casadelamoneda.museum +castle.museum +castres.museum +celtic.museum +center.museum +chattanooga.museum +cheltenham.museum +chesapeakebay.museum +chicago.museum +children.museum +childrens.museum +childrensgarden.museum +chiropractic.museum +chocolate.museum +christiansburg.museum +cincinnati.museum +cinema.museum +circus.museum +civilisation.museum +civilization.museum +civilwar.museum +clinton.museum +clock.museum +coal.museum +coastaldefence.museum +cody.museum +coldwar.museum +collection.museum +colonialwilliamsburg.museum +coloradoplateau.museum +columbia.museum +columbus.museum +communication.museum +communications.museum +community.museum +computer.museum +computerhistory.museum +comunicações.museum +contemporary.museum +contemporaryart.museum +convent.museum +copenhagen.museum +corporation.museum +correios-e-telecomunicações.museum +corvette.museum +costume.museum +countryestate.museum +county.museum +crafts.museum +cranbrook.museum +creation.museum +cultural.museum +culturalcenter.museum +culture.museum +cyber.museum +cymru.museum +dali.museum +dallas.museum +database.museum +ddr.museum +decorativearts.museum +delaware.museum +delmenhorst.museum +denmark.museum +depot.museum +design.museum +detroit.museum +dinosaur.museum +discovery.museum +dolls.museum +donostia.museum +durham.museum +eastafrica.museum +eastcoast.museum +education.museum +educational.museum +egyptian.museum +eisenbahn.museum +elburg.museum +elvendrell.museum +embroidery.museum +encyclopedic.museum +england.museum +entomology.museum +environment.museum +environmentalconservation.museum +epilepsy.museum +essex.museum +estate.museum +ethnology.museum +exeter.museum +exhibition.museum +family.museum +farm.museum +farmequipment.museum +farmers.museum +farmstead.museum +field.museum +figueres.museum +filatelia.museum +film.museum +fineart.museum +finearts.museum +finland.museum +flanders.museum +florida.museum +force.museum +fortmissoula.museum +fortworth.museum +foundation.museum +francaise.museum +frankfurt.museum +franziskaner.museum +freemasonry.museum +freiburg.museum +fribourg.museum +frog.museum +fundacio.museum +furniture.museum +gallery.museum +garden.museum +gateway.museum +geelvinck.museum +gemological.museum +geology.museum +georgia.museum +giessen.museum +glas.museum +glass.museum +gorge.museum +grandrapids.museum +graz.museum +guernsey.museum +halloffame.museum +hamburg.museum +handson.museum +harvestcelebration.museum +hawaii.museum +health.museum +heimatunduhren.museum +hellas.museum +helsinki.museum +hembygdsforbund.museum +heritage.museum +histoire.museum +historical.museum +historicalsociety.museum +historichouses.museum +historisch.museum +historisches.museum +history.museum +historyofscience.museum +horology.museum +house.museum +humanities.museum +illustration.museum +imageandsound.museum +indian.museum +indiana.museum +indianapolis.museum +indianmarket.museum +intelligence.museum +interactive.museum +iraq.museum +iron.museum +isleofman.museum +jamison.museum +jefferson.museum +jerusalem.museum +jewelry.museum +jewish.museum +jewishart.museum +jfk.museum +journalism.museum +judaica.museum +judygarland.museum +juedisches.museum +juif.museum +karate.museum +karikatur.museum +kids.museum +koebenhavn.museum +koeln.museum +kunst.museum +kunstsammlung.museum +kunstunddesign.museum +labor.museum +labour.museum +lajolla.museum +lancashire.museum +landes.museum +lans.museum +läns.museum +larsson.museum +lewismiller.museum +lincoln.museum +linz.museum +living.museum +livinghistory.museum +localhistory.museum +london.museum +losangeles.museum +louvre.museum +loyalist.museum +lucerne.museum +luxembourg.museum +luzern.museum +mad.museum +madrid.museum +mallorca.museum +manchester.museum +mansion.museum +mansions.museum +manx.museum +marburg.museum +maritime.museum +maritimo.museum +maryland.museum +marylhurst.museum +media.museum +medical.museum +medizinhistorisches.museum +meeres.museum +memorial.museum +mesaverde.museum +michigan.museum +midatlantic.museum +military.museum +mill.museum +miners.museum +mining.museum +minnesota.museum +missile.museum +missoula.museum +modern.museum +moma.museum +money.museum +monmouth.museum +monticello.museum +montreal.museum +moscow.museum +motorcycle.museum +muenchen.museum +muenster.museum +mulhouse.museum +muncie.museum +museet.museum +museumcenter.museum +museumvereniging.museum +music.museum +national.museum +nationalfirearms.museum +nationalheritage.museum +nativeamerican.museum +naturalhistory.museum +naturalhistorymuseum.museum +naturalsciences.museum +nature.museum +naturhistorisches.museum +natuurwetenschappen.museum +naumburg.museum +naval.museum +nebraska.museum +neues.museum +newhampshire.museum +newjersey.museum +newmexico.museum +newport.museum +newspaper.museum +newyork.museum +niepce.museum +norfolk.museum +north.museum +nrw.museum +nuernberg.museum +nuremberg.museum +nyc.museum +nyny.museum +oceanographic.museum +oceanographique.museum +omaha.museum +online.museum +ontario.museum +openair.museum +oregon.museum +oregontrail.museum +otago.museum +oxford.museum +pacific.museum +paderborn.museum +palace.museum +paleo.museum +palmsprings.museum +panama.museum +paris.museum +pasadena.museum +pharmacy.museum +philadelphia.museum +philadelphiaarea.museum +philately.museum +phoenix.museum +photography.museum +pilots.museum +pittsburgh.museum +planetarium.museum +plantation.museum +plants.museum +plaza.museum +portal.museum +portland.museum +portlligat.museum +posts-and-telecommunications.museum +preservation.museum +presidio.museum +press.museum +project.museum +public.museum +pubol.museum +quebec.museum +railroad.museum +railway.museum +research.museum +resistance.museum +riodejaneiro.museum +rochester.museum +rockart.museum +roma.museum +russia.museum +saintlouis.museum +salem.museum +salvadordali.museum +salzburg.museum +sandiego.museum +sanfrancisco.museum +santabarbara.museum +santacruz.museum +santafe.museum +saskatchewan.museum +satx.museum +savannahga.museum +schlesisches.museum +schoenbrunn.museum +schokoladen.museum +school.museum +schweiz.museum +science.museum +scienceandhistory.museum +scienceandindustry.museum +sciencecenter.museum +sciencecenters.museum +science-fiction.museum +sciencehistory.museum +sciences.museum +sciencesnaturelles.museum +scotland.museum +seaport.museum +settlement.museum +settlers.museum +shell.museum +sherbrooke.museum +sibenik.museum +silk.museum +ski.museum +skole.museum +society.museum +sologne.museum +soundandvision.museum +southcarolina.museum +southwest.museum +space.museum +spy.museum +square.museum +stadt.museum +stalbans.museum +starnberg.museum +state.museum +stateofdelaware.museum +station.museum +steam.museum +steiermark.museum +stjohn.museum +stockholm.museum +stpetersburg.museum +stuttgart.museum +suisse.museum +surgeonshall.museum +surrey.museum +svizzera.museum +sweden.museum +sydney.museum +tank.museum +tcm.museum +technology.museum +telekommunikation.museum +television.museum +texas.museum +textile.museum +theater.museum +time.museum +timekeeping.museum +topology.museum +torino.museum +touch.museum +town.museum +transport.museum +tree.museum +trolley.museum +trust.museum +trustee.museum +uhren.museum +ulm.museum +undersea.museum +university.museum +usa.museum +usantiques.museum +usarts.museum +uscountryestate.museum +usculture.museum +usdecorativearts.museum +usgarden.museum +ushistory.museum +ushuaia.museum +uslivinghistory.museum +utah.museum +uvic.museum +valley.museum +vantaa.museum +versailles.museum +viking.museum +village.museum +virginia.museum +virtual.museum +virtuel.museum +vlaanderen.museum +volkenkunde.museum +wales.museum +wallonie.museum +war.museum +washingtondc.museum +watchandclock.museum +watch-and-clock.museum +western.museum +westfalen.museum +whaling.museum +wildlife.museum +williamsburg.museum +windmill.museum +workshop.museum +york.museum +yorkshire.museum +yosemite.museum +youth.museum +zoological.museum +zoology.museum +ירושלים.museum +иком.museum + +// mv : https://en.wikipedia.org/wiki/.mv +// "mv" included because, contra Wikipedia, google.mv exists. +mv +aero.mv +biz.mv +com.mv +coop.mv +edu.mv +gov.mv +info.mv +int.mv +mil.mv +museum.mv +name.mv +net.mv +org.mv +pro.mv + +// mw : http://www.registrar.mw/ +mw +ac.mw +biz.mw +co.mw +com.mw +coop.mw +edu.mw +gov.mw +int.mw +museum.mw +net.mw +org.mw + +// mx : http://www.nic.mx/ +// Submitted by registry +mx +com.mx +org.mx +gob.mx +edu.mx +net.mx + +// my : http://www.mynic.net.my/ +my +com.my +net.my +org.my +gov.my +edu.my +mil.my +name.my + +// mz : http://www.uem.mz/ +// Submitted by registry +mz +ac.mz +adv.mz +co.mz +edu.mz +gov.mz +mil.mz +net.mz +org.mz + +// na : http://www.na-nic.com.na/ +// http://www.info.na/domain/ +na +info.na +pro.na +name.na +school.na +or.na +dr.na +us.na +mx.na +ca.na +in.na +cc.na +tv.na +ws.na +mobi.na +co.na +com.na +org.na + +// name : has 2nd-level tlds, but there's no list of them +name + +// nc : http://www.cctld.nc/ +nc +asso.nc + +// ne : https://en.wikipedia.org/wiki/.ne +ne + +// net : https://en.wikipedia.org/wiki/.net +net + +// nf : https://en.wikipedia.org/wiki/.nf +nf +com.nf +net.nf +per.nf +rec.nf +web.nf +arts.nf +firm.nf +info.nf +other.nf +store.nf + +// ng : http://www.nira.org.ng/index.php/join-us/register-ng-domain/189-nira-slds +ng +com.ng +edu.ng +gov.ng +i.ng +mil.ng +mobi.ng +name.ng +net.ng +org.ng +sch.ng + +// ni : http://www.nic.ni/ +ni +ac.ni +biz.ni +co.ni +com.ni +edu.ni +gob.ni +in.ni +info.ni +int.ni +mil.ni +net.ni +nom.ni +org.ni +web.ni + +// nl : https://en.wikipedia.org/wiki/.nl +// https://www.sidn.nl/ +// ccTLD for the Netherlands +nl + +// BV.nl will be a registry for dutch BV's (besloten vennootschap) +bv.nl + +// no : http://www.norid.no/regelverk/index.en.html +// The Norwegian registry has declined to notify us of updates. The web pages +// referenced below are the official source of the data. There is also an +// announce mailing list: +// https://postlister.uninett.no/sympa/info/norid-diskusjon +no +// Norid generic domains : http://www.norid.no/regelverk/vedlegg-c.en.html +fhs.no +vgs.no +fylkesbibl.no +folkebibl.no +museum.no +idrett.no +priv.no +// Non-Norid generic domains : http://www.norid.no/regelverk/vedlegg-d.en.html +mil.no +stat.no +dep.no +kommune.no +herad.no +// no geographical names : http://www.norid.no/regelverk/vedlegg-b.en.html +// counties +aa.no +ah.no +bu.no +fm.no +hl.no +hm.no +jan-mayen.no +mr.no +nl.no +nt.no +of.no +ol.no +oslo.no +rl.no +sf.no +st.no +svalbard.no +tm.no +tr.no +va.no +vf.no +// primary and lower secondary schools per county +gs.aa.no +gs.ah.no +gs.bu.no +gs.fm.no +gs.hl.no +gs.hm.no +gs.jan-mayen.no +gs.mr.no +gs.nl.no +gs.nt.no +gs.of.no +gs.ol.no +gs.oslo.no +gs.rl.no +gs.sf.no +gs.st.no +gs.svalbard.no +gs.tm.no +gs.tr.no +gs.va.no +gs.vf.no +// cities +akrehamn.no +åkrehamn.no +algard.no +ålgård.no +arna.no +brumunddal.no +bryne.no +bronnoysund.no +brønnøysund.no +drobak.no +drøbak.no +egersund.no +fetsund.no +floro.no +florø.no +fredrikstad.no +hokksund.no +honefoss.no +hønefoss.no +jessheim.no +jorpeland.no +jørpeland.no +kirkenes.no +kopervik.no +krokstadelva.no +langevag.no +langevåg.no +leirvik.no +mjondalen.no +mjøndalen.no +mo-i-rana.no +mosjoen.no +mosjøen.no +nesoddtangen.no +orkanger.no +osoyro.no +osøyro.no +raholt.no +råholt.no +sandnessjoen.no +sandnessjøen.no +skedsmokorset.no +slattum.no +spjelkavik.no +stathelle.no +stavern.no +stjordalshalsen.no +stjørdalshalsen.no +tananger.no +tranby.no +vossevangen.no +// communities +afjord.no +åfjord.no +agdenes.no +al.no +ål.no +alesund.no +ålesund.no +alstahaug.no +alta.no +áltá.no +alaheadju.no +álaheadju.no +alvdal.no +amli.no +åmli.no +amot.no +åmot.no +andebu.no +andoy.no +andøy.no +andasuolo.no +ardal.no +årdal.no +aremark.no +arendal.no +ås.no +aseral.no +åseral.no +asker.no +askim.no +askvoll.no +askoy.no +askøy.no +asnes.no +åsnes.no +audnedaln.no +aukra.no +aure.no +aurland.no +aurskog-holand.no +aurskog-høland.no +austevoll.no +austrheim.no +averoy.no +averøy.no +balestrand.no +ballangen.no +balat.no +bálát.no +balsfjord.no +bahccavuotna.no +báhccavuotna.no +bamble.no +bardu.no +beardu.no +beiarn.no +bajddar.no +bájddar.no +baidar.no +báidár.no +berg.no +bergen.no +berlevag.no +berlevåg.no +bearalvahki.no +bearalváhki.no +bindal.no +birkenes.no +bjarkoy.no +bjarkøy.no +bjerkreim.no +bjugn.no +bodo.no +bodø.no +badaddja.no +bådåddjå.no +budejju.no +bokn.no +bremanger.no +bronnoy.no +brønnøy.no +bygland.no +bykle.no +barum.no +bærum.no +bo.telemark.no +bø.telemark.no +bo.nordland.no +bø.nordland.no +bievat.no +bievát.no +bomlo.no +bømlo.no +batsfjord.no +båtsfjord.no +bahcavuotna.no +báhcavuotna.no +dovre.no +drammen.no +drangedal.no +dyroy.no +dyrøy.no +donna.no +dønna.no +eid.no +eidfjord.no +eidsberg.no +eidskog.no +eidsvoll.no +eigersund.no +elverum.no +enebakk.no +engerdal.no +etne.no +etnedal.no +evenes.no +evenassi.no +evenášši.no +evje-og-hornnes.no +farsund.no +fauske.no +fuossko.no +fuoisku.no +fedje.no +fet.no +finnoy.no +finnøy.no +fitjar.no +fjaler.no +fjell.no +flakstad.no +flatanger.no +flekkefjord.no +flesberg.no +flora.no +fla.no +flå.no +folldal.no +forsand.no +fosnes.no +frei.no +frogn.no +froland.no +frosta.no +frana.no +fræna.no +froya.no +frøya.no +fusa.no +fyresdal.no +forde.no +førde.no +gamvik.no +gangaviika.no +gáŋgaviika.no +gaular.no +gausdal.no +gildeskal.no +gildeskål.no +giske.no +gjemnes.no +gjerdrum.no +gjerstad.no +gjesdal.no +gjovik.no +gjøvik.no +gloppen.no +gol.no +gran.no +grane.no +granvin.no +gratangen.no +grimstad.no +grong.no +kraanghke.no +kråanghke.no +grue.no +gulen.no +hadsel.no +halden.no +halsa.no +hamar.no +hamaroy.no +habmer.no +hábmer.no +hapmir.no +hápmir.no +hammerfest.no +hammarfeasta.no +hámmárfeasta.no +haram.no +hareid.no +harstad.no +hasvik.no +aknoluokta.no +ákŋoluokta.no +hattfjelldal.no +aarborte.no +haugesund.no +hemne.no +hemnes.no +hemsedal.no +heroy.more-og-romsdal.no +herøy.møre-og-romsdal.no +heroy.nordland.no +herøy.nordland.no +hitra.no +hjartdal.no +hjelmeland.no +hobol.no +hobøl.no +hof.no +hol.no +hole.no +holmestrand.no +holtalen.no +holtålen.no +hornindal.no +horten.no +hurdal.no +hurum.no +hvaler.no +hyllestad.no +hagebostad.no +hægebostad.no +hoyanger.no +høyanger.no +hoylandet.no +høylandet.no +ha.no +hå.no +ibestad.no +inderoy.no +inderøy.no +iveland.no +jevnaker.no +jondal.no +jolster.no +jølster.no +karasjok.no +karasjohka.no +kárášjohka.no +karlsoy.no +galsa.no +gálsá.no +karmoy.no +karmøy.no +kautokeino.no +guovdageaidnu.no +klepp.no +klabu.no +klæbu.no +kongsberg.no +kongsvinger.no +kragero.no +kragerø.no +kristiansand.no +kristiansund.no +krodsherad.no +krødsherad.no +kvalsund.no +rahkkeravju.no +ráhkkerávju.no +kvam.no +kvinesdal.no +kvinnherad.no +kviteseid.no +kvitsoy.no +kvitsøy.no +kvafjord.no +kvæfjord.no +giehtavuoatna.no +kvanangen.no +kvænangen.no +navuotna.no +návuotna.no +kafjord.no +kåfjord.no +gaivuotna.no +gáivuotna.no +larvik.no +lavangen.no +lavagis.no +loabat.no +loabát.no +lebesby.no +davvesiida.no +leikanger.no +leirfjord.no +leka.no +leksvik.no +lenvik.no +leangaviika.no +leaŋgaviika.no +lesja.no +levanger.no +lier.no +lierne.no +lillehammer.no +lillesand.no +lindesnes.no +lindas.no +lindås.no +lom.no +loppa.no +lahppi.no +láhppi.no +lund.no +lunner.no +luroy.no +lurøy.no +luster.no +lyngdal.no +lyngen.no +ivgu.no +lardal.no +lerdal.no +lærdal.no +lodingen.no +lødingen.no +lorenskog.no +lørenskog.no +loten.no +løten.no +malvik.no +masoy.no +måsøy.no +muosat.no +muosát.no +mandal.no +marker.no +marnardal.no +masfjorden.no +meland.no +meldal.no +melhus.no +meloy.no +meløy.no +meraker.no +meråker.no +moareke.no +moåreke.no +midsund.no +midtre-gauldal.no +modalen.no +modum.no +molde.no +moskenes.no +moss.no +mosvik.no +malselv.no +målselv.no +malatvuopmi.no +málatvuopmi.no +namdalseid.no +aejrie.no +namsos.no +namsskogan.no +naamesjevuemie.no +nååmesjevuemie.no +laakesvuemie.no +nannestad.no +narvik.no +narviika.no +naustdal.no +nedre-eiker.no +nes.akershus.no +nes.buskerud.no +nesna.no +nesodden.no +nesseby.no +unjarga.no +unjárga.no +nesset.no +nissedal.no +nittedal.no +nord-aurdal.no +nord-fron.no +nord-odal.no +norddal.no +nordkapp.no +davvenjarga.no +davvenjárga.no +nordre-land.no +nordreisa.no +raisa.no +ráisa.no +nore-og-uvdal.no +notodden.no +naroy.no +nærøy.no +notteroy.no +nøtterøy.no +odda.no +oksnes.no +øksnes.no +oppdal.no +oppegard.no +oppegård.no +orkdal.no +orland.no +ørland.no +orskog.no +ørskog.no +orsta.no +ørsta.no +os.hedmark.no +os.hordaland.no +osen.no +osteroy.no +osterøy.no +ostre-toten.no +østre-toten.no +overhalla.no +ovre-eiker.no +øvre-eiker.no +oyer.no +øyer.no +oygarden.no +øygarden.no +oystre-slidre.no +øystre-slidre.no +porsanger.no +porsangu.no +porsáŋgu.no +porsgrunn.no +radoy.no +radøy.no +rakkestad.no +rana.no +ruovat.no +randaberg.no +rauma.no +rendalen.no +rennebu.no +rennesoy.no +rennesøy.no +rindal.no +ringebu.no +ringerike.no +ringsaker.no +rissa.no +risor.no +risør.no +roan.no +rollag.no +rygge.no +ralingen.no +rælingen.no +rodoy.no +rødøy.no +romskog.no +rømskog.no +roros.no +røros.no +rost.no +røst.no +royken.no +røyken.no +royrvik.no +røyrvik.no +rade.no +råde.no +salangen.no +siellak.no +saltdal.no +salat.no +sálát.no +sálat.no +samnanger.no +sande.more-og-romsdal.no +sande.møre-og-romsdal.no +sande.vestfold.no +sandefjord.no +sandnes.no +sandoy.no +sandøy.no +sarpsborg.no +sauda.no +sauherad.no +sel.no +selbu.no +selje.no +seljord.no +sigdal.no +siljan.no +sirdal.no +skaun.no +skedsmo.no +ski.no +skien.no +skiptvet.no +skjervoy.no +skjervøy.no +skierva.no +skiervá.no +skjak.no +skjåk.no +skodje.no +skanland.no +skånland.no +skanit.no +skánit.no +smola.no +smøla.no +snillfjord.no +snasa.no +snåsa.no +snoasa.no +snaase.no +snåase.no +sogndal.no +sokndal.no +sola.no +solund.no +songdalen.no +sortland.no +spydeberg.no +stange.no +stavanger.no +steigen.no +steinkjer.no +stjordal.no +stjørdal.no +stokke.no +stor-elvdal.no +stord.no +stordal.no +storfjord.no +omasvuotna.no +strand.no +stranda.no +stryn.no +sula.no +suldal.no +sund.no +sunndal.no +surnadal.no +sveio.no +svelvik.no +sykkylven.no +sogne.no +søgne.no +somna.no +sømna.no +sondre-land.no +søndre-land.no +sor-aurdal.no +sør-aurdal.no +sor-fron.no +sør-fron.no +sor-odal.no +sør-odal.no +sor-varanger.no +sør-varanger.no +matta-varjjat.no +mátta-várjjat.no +sorfold.no +sørfold.no +sorreisa.no +sørreisa.no +sorum.no +sørum.no +tana.no +deatnu.no +time.no +tingvoll.no +tinn.no +tjeldsund.no +dielddanuorri.no +tjome.no +tjøme.no +tokke.no +tolga.no +torsken.no +tranoy.no +tranøy.no +tromso.no +tromsø.no +tromsa.no +romsa.no +trondheim.no +troandin.no +trysil.no +trana.no +træna.no +trogstad.no +trøgstad.no +tvedestrand.no +tydal.no +tynset.no +tysfjord.no +divtasvuodna.no +divttasvuotna.no +tysnes.no +tysvar.no +tysvær.no +tonsberg.no +tønsberg.no +ullensaker.no +ullensvang.no +ulvik.no +utsira.no +vadso.no +vadsø.no +cahcesuolo.no +čáhcesuolo.no +vaksdal.no +valle.no +vang.no +vanylven.no +vardo.no +vardø.no +varggat.no +várggát.no +vefsn.no +vaapste.no +vega.no +vegarshei.no +vegårshei.no +vennesla.no +verdal.no +verran.no +vestby.no +vestnes.no +vestre-slidre.no +vestre-toten.no +vestvagoy.no +vestvågøy.no +vevelstad.no +vik.no +vikna.no +vindafjord.no +volda.no +voss.no +varoy.no +værøy.no +vagan.no +vågan.no +voagat.no +vagsoy.no +vågsøy.no +vaga.no +vågå.no +valer.ostfold.no +våler.østfold.no +valer.hedmark.no +våler.hedmark.no + +// np : http://www.mos.com.np/register.html +*.np + +// nr : http://cenpac.net.nr/dns/index.html +// Submitted by registry +nr +biz.nr +info.nr +gov.nr +edu.nr +org.nr +net.nr +com.nr + +// nu : https://en.wikipedia.org/wiki/.nu +nu + +// nz : https://en.wikipedia.org/wiki/.nz +// Submitted by registry +nz +ac.nz +co.nz +cri.nz +geek.nz +gen.nz +govt.nz +health.nz +iwi.nz +kiwi.nz +maori.nz +mil.nz +māori.nz +net.nz +org.nz +parliament.nz +school.nz + +// om : https://en.wikipedia.org/wiki/.om +om +co.om +com.om +edu.om +gov.om +med.om +museum.om +net.om +org.om +pro.om + +// onion : https://tools.ietf.org/html/rfc7686 +onion + +// org : https://en.wikipedia.org/wiki/.org +org + +// pa : http://www.nic.pa/ +// Some additional second level "domains" resolve directly as hostnames, such as +// pannet.pa, so we add a rule for "pa". +pa +ac.pa +gob.pa +com.pa +org.pa +sld.pa +edu.pa +net.pa +ing.pa +abo.pa +med.pa +nom.pa + +// pe : https://www.nic.pe/InformeFinalComision.pdf +pe +edu.pe +gob.pe +nom.pe +mil.pe +org.pe +com.pe +net.pe + +// pf : http://www.gobin.info/domainname/formulaire-pf.pdf +pf +com.pf +org.pf +edu.pf + +// pg : https://en.wikipedia.org/wiki/.pg +*.pg + +// ph : http://www.domains.ph/FAQ2.asp +// Submitted by registry +ph +com.ph +net.ph +org.ph +gov.ph +edu.ph +ngo.ph +mil.ph +i.ph + +// pk : http://pk5.pknic.net.pk/pk5/msgNamepk.PK +pk +com.pk +net.pk +edu.pk +org.pk +fam.pk +biz.pk +web.pk +gov.pk +gob.pk +gok.pk +gon.pk +gop.pk +gos.pk +info.pk + +// pl http://www.dns.pl/english/index.html +// Submitted by registry +pl +com.pl +net.pl +org.pl +// pl functional domains (http://www.dns.pl/english/index.html) +aid.pl +agro.pl +atm.pl +auto.pl +biz.pl +edu.pl +gmina.pl +gsm.pl +info.pl +mail.pl +miasta.pl +media.pl +mil.pl +nieruchomosci.pl +nom.pl +pc.pl +powiat.pl +priv.pl +realestate.pl +rel.pl +sex.pl +shop.pl +sklep.pl +sos.pl +szkola.pl +targi.pl +tm.pl +tourism.pl +travel.pl +turystyka.pl +// Government domains +gov.pl +ap.gov.pl +ic.gov.pl +is.gov.pl +us.gov.pl +kmpsp.gov.pl +kppsp.gov.pl +kwpsp.gov.pl +psp.gov.pl +wskr.gov.pl +kwp.gov.pl +mw.gov.pl +ug.gov.pl +um.gov.pl +umig.gov.pl +ugim.gov.pl +upow.gov.pl +uw.gov.pl +starostwo.gov.pl +pa.gov.pl +po.gov.pl +psse.gov.pl +pup.gov.pl +rzgw.gov.pl +sa.gov.pl +so.gov.pl +sr.gov.pl +wsa.gov.pl +sko.gov.pl +uzs.gov.pl +wiih.gov.pl +winb.gov.pl +pinb.gov.pl +wios.gov.pl +witd.gov.pl +wzmiuw.gov.pl +piw.gov.pl +wiw.gov.pl +griw.gov.pl +wif.gov.pl +oum.gov.pl +sdn.gov.pl +zp.gov.pl +uppo.gov.pl +mup.gov.pl +wuoz.gov.pl +konsulat.gov.pl +oirm.gov.pl +// pl regional domains (http://www.dns.pl/english/index.html) +augustow.pl +babia-gora.pl +bedzin.pl +beskidy.pl +bialowieza.pl +bialystok.pl +bielawa.pl +bieszczady.pl +boleslawiec.pl +bydgoszcz.pl +bytom.pl +cieszyn.pl +czeladz.pl +czest.pl +dlugoleka.pl +elblag.pl +elk.pl +glogow.pl +gniezno.pl +gorlice.pl +grajewo.pl +ilawa.pl +jaworzno.pl +jelenia-gora.pl +jgora.pl +kalisz.pl +kazimierz-dolny.pl +karpacz.pl +kartuzy.pl +kaszuby.pl +katowice.pl +kepno.pl +ketrzyn.pl +klodzko.pl +kobierzyce.pl +kolobrzeg.pl +konin.pl +konskowola.pl +kutno.pl +lapy.pl +lebork.pl +legnica.pl +lezajsk.pl +limanowa.pl +lomza.pl +lowicz.pl +lubin.pl +lukow.pl +malbork.pl +malopolska.pl +mazowsze.pl +mazury.pl +mielec.pl +mielno.pl +mragowo.pl +naklo.pl +nowaruda.pl +nysa.pl +olawa.pl +olecko.pl +olkusz.pl +olsztyn.pl +opoczno.pl +opole.pl +ostroda.pl +ostroleka.pl +ostrowiec.pl +ostrowwlkp.pl +pila.pl +pisz.pl +podhale.pl +podlasie.pl +polkowice.pl +pomorze.pl +pomorskie.pl +prochowice.pl +pruszkow.pl +przeworsk.pl +pulawy.pl +radom.pl +rawa-maz.pl +rybnik.pl +rzeszow.pl +sanok.pl +sejny.pl +slask.pl +slupsk.pl +sosnowiec.pl +stalowa-wola.pl +skoczow.pl +starachowice.pl +stargard.pl +suwalki.pl +swidnica.pl +swiebodzin.pl +swinoujscie.pl +szczecin.pl +szczytno.pl +tarnobrzeg.pl +tgory.pl +turek.pl +tychy.pl +ustka.pl +walbrzych.pl +warmia.pl +warszawa.pl +waw.pl +wegrow.pl +wielun.pl +wlocl.pl +wloclawek.pl +wodzislaw.pl +wolomin.pl +wroclaw.pl +zachpomor.pl +zagan.pl +zarow.pl +zgora.pl +zgorzelec.pl + +// pm : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf +pm + +// pn : http://www.government.pn/PnRegistry/policies.htm +pn +gov.pn +co.pn +org.pn +edu.pn +net.pn + +// post : https://en.wikipedia.org/wiki/.post +post + +// pr : http://www.nic.pr/index.asp?f=1 +pr +com.pr +net.pr +org.pr +gov.pr +edu.pr +isla.pr +pro.pr +biz.pr +info.pr +name.pr +// these aren't mentioned on nic.pr, but on https://en.wikipedia.org/wiki/.pr +est.pr +prof.pr +ac.pr + +// pro : http://registry.pro/get-pro +pro +aaa.pro +aca.pro +acct.pro +avocat.pro +bar.pro +cpa.pro +eng.pro +jur.pro +law.pro +med.pro +recht.pro + +// ps : https://en.wikipedia.org/wiki/.ps +// http://www.nic.ps/registration/policy.html#reg +ps +edu.ps +gov.ps +sec.ps +plo.ps +com.ps +org.ps +net.ps + +// pt : http://online.dns.pt/dns/start_dns +pt +net.pt +gov.pt +org.pt +edu.pt +int.pt +publ.pt +com.pt +nome.pt + +// pw : https://en.wikipedia.org/wiki/.pw +pw +co.pw +ne.pw +or.pw +ed.pw +go.pw +belau.pw + +// py : http://www.nic.py/pautas.html#seccion_9 +// Submitted by registry +py +com.py +coop.py +edu.py +gov.py +mil.py +net.py +org.py + +// qa : http://domains.qa/en/ +qa +com.qa +edu.qa +gov.qa +mil.qa +name.qa +net.qa +org.qa +sch.qa + +// re : http://www.afnic.re/obtenir/chartes/nommage-re/annexe-descriptifs +re +asso.re +com.re +nom.re + +// ro : http://www.rotld.ro/ +ro +arts.ro +com.ro +firm.ro +info.ro +nom.ro +nt.ro +org.ro +rec.ro +store.ro +tm.ro +www.ro + +// rs : https://www.rnids.rs/en/domains/national-domains +rs +ac.rs +co.rs +edu.rs +gov.rs +in.rs +org.rs + +// ru : https://cctld.ru/en/domains/domens_ru/reserved/ +ru +ac.ru +edu.ru +gov.ru +int.ru +mil.ru +test.ru + +// rw : http://www.nic.rw/cgi-bin/policy.pl +rw +gov.rw +net.rw +edu.rw +ac.rw +com.rw +co.rw +int.rw +mil.rw +gouv.rw + +// sa : http://www.nic.net.sa/ +sa +com.sa +net.sa +org.sa +gov.sa +med.sa +pub.sa +edu.sa +sch.sa + +// sb : http://www.sbnic.net.sb/ +// Submitted by registry +sb +com.sb +edu.sb +gov.sb +net.sb +org.sb + +// sc : http://www.nic.sc/ +sc +com.sc +gov.sc +net.sc +org.sc +edu.sc + +// sd : http://www.isoc.sd/sudanic.isoc.sd/billing_pricing.htm +// Submitted by registry +sd +com.sd +net.sd +org.sd +edu.sd +med.sd +tv.sd +gov.sd +info.sd + +// se : https://en.wikipedia.org/wiki/.se +// Submitted by registry +se +a.se +ac.se +b.se +bd.se +brand.se +c.se +d.se +e.se +f.se +fh.se +fhsk.se +fhv.se +g.se +h.se +i.se +k.se +komforb.se +kommunalforbund.se +komvux.se +l.se +lanbib.se +m.se +n.se +naturbruksgymn.se +o.se +org.se +p.se +parti.se +pp.se +press.se +r.se +s.se +t.se +tm.se +u.se +w.se +x.se +y.se +z.se + +// sg : http://www.nic.net.sg/page/registration-policies-procedures-and-guidelines +sg +com.sg +net.sg +org.sg +gov.sg +edu.sg +per.sg + +// sh : http://www.nic.sh/registrar.html +sh +com.sh +net.sh +gov.sh +org.sh +mil.sh + +// si : https://en.wikipedia.org/wiki/.si +si + +// sj : No registrations at this time. +// Submitted by registry +sj + +// sk : https://en.wikipedia.org/wiki/.sk +// list of 2nd level domains ? +sk + +// sl : http://www.nic.sl +// Submitted by registry +sl +com.sl +net.sl +edu.sl +gov.sl +org.sl + +// sm : https://en.wikipedia.org/wiki/.sm +sm + +// sn : https://en.wikipedia.org/wiki/.sn +sn +art.sn +com.sn +edu.sn +gouv.sn +org.sn +perso.sn +univ.sn + +// so : http://www.soregistry.com/ +so +com.so +net.so +org.so + +// sr : https://en.wikipedia.org/wiki/.sr +sr + +// st : http://www.nic.st/html/policyrules/ +st +co.st +com.st +consulado.st +edu.st +embaixada.st +gov.st +mil.st +net.st +org.st +principe.st +saotome.st +store.st + +// su : https://en.wikipedia.org/wiki/.su +su + +// sv : http://www.svnet.org.sv/niveldos.pdf +sv +com.sv +edu.sv +gob.sv +org.sv +red.sv + +// sx : https://en.wikipedia.org/wiki/.sx +// Submitted by registry +sx +gov.sx + +// sy : https://en.wikipedia.org/wiki/.sy +// see also: http://www.gobin.info/domainname/sy.doc +sy +edu.sy +gov.sy +net.sy +mil.sy +com.sy +org.sy + +// sz : https://en.wikipedia.org/wiki/.sz +// http://www.sispa.org.sz/ +sz +co.sz +ac.sz +org.sz + +// tc : https://en.wikipedia.org/wiki/.tc +tc + +// td : https://en.wikipedia.org/wiki/.td +td + +// tel: https://en.wikipedia.org/wiki/.tel +// http://www.telnic.org/ +tel + +// tf : https://en.wikipedia.org/wiki/.tf +tf + +// tg : https://en.wikipedia.org/wiki/.tg +// http://www.nic.tg/ +tg + +// th : https://en.wikipedia.org/wiki/.th +// Submitted by registry +th +ac.th +co.th +go.th +in.th +mi.th +net.th +or.th + +// tj : http://www.nic.tj/policy.html +tj +ac.tj +biz.tj +co.tj +com.tj +edu.tj +go.tj +gov.tj +int.tj +mil.tj +name.tj +net.tj +nic.tj +org.tj +test.tj +web.tj + +// tk : https://en.wikipedia.org/wiki/.tk +tk + +// tl : https://en.wikipedia.org/wiki/.tl +tl +gov.tl + +// tm : http://www.nic.tm/local.html +tm +com.tm +co.tm +org.tm +net.tm +nom.tm +gov.tm +mil.tm +edu.tm + +// tn : https://en.wikipedia.org/wiki/.tn +// http://whois.ati.tn/ +tn +com.tn +ens.tn +fin.tn +gov.tn +ind.tn +intl.tn +nat.tn +net.tn +org.tn +info.tn +perso.tn +tourism.tn +edunet.tn +rnrt.tn +rns.tn +rnu.tn +mincom.tn +agrinet.tn +defense.tn +turen.tn + +// to : https://en.wikipedia.org/wiki/.to +// Submitted by registry +to +com.to +gov.to +net.to +org.to +edu.to +mil.to + +// subTLDs: https://www.nic.tr/forms/eng/policies.pdf +// and: https://www.nic.tr/forms/politikalar.pdf +// Submitted by +tr +com.tr +info.tr +biz.tr +net.tr +org.tr +web.tr +gen.tr +tv.tr +av.tr +dr.tr +bbs.tr +name.tr +tel.tr +gov.tr +bel.tr +pol.tr +mil.tr +k12.tr +edu.tr +kep.tr + +// Used by Northern Cyprus +nc.tr + +// Used by government agencies of Northern Cyprus +gov.nc.tr + +// travel : https://en.wikipedia.org/wiki/.travel +travel + +// tt : http://www.nic.tt/ +tt +co.tt +com.tt +org.tt +net.tt +biz.tt +info.tt +pro.tt +int.tt +coop.tt +jobs.tt +mobi.tt +travel.tt +museum.tt +aero.tt +name.tt +gov.tt +edu.tt + +// tv : https://en.wikipedia.org/wiki/.tv +// Not listing any 2LDs as reserved since none seem to exist in practice, +// Wikipedia notwithstanding. +tv + +// tw : https://en.wikipedia.org/wiki/.tw +tw +edu.tw +gov.tw +mil.tw +com.tw +net.tw +org.tw +idv.tw +game.tw +ebiz.tw +club.tw +網路.tw +組織.tw +商業.tw + +// tz : http://www.tznic.or.tz/index.php/domains +// Submitted by registry +tz +ac.tz +co.tz +go.tz +hotel.tz +info.tz +me.tz +mil.tz +mobi.tz +ne.tz +or.tz +sc.tz +tv.tz + +// ua : https://hostmaster.ua/policy/?ua +// Submitted by registry +ua +// ua 2LD +com.ua +edu.ua +gov.ua +in.ua +net.ua +org.ua +// ua geographic names +// https://hostmaster.ua/2ld/ +cherkassy.ua +cherkasy.ua +chernigov.ua +chernihiv.ua +chernivtsi.ua +chernovtsy.ua +ck.ua +cn.ua +cr.ua +crimea.ua +cv.ua +dn.ua +dnepropetrovsk.ua +dnipropetrovsk.ua +dominic.ua +donetsk.ua +dp.ua +if.ua +ivano-frankivsk.ua +kh.ua +kharkiv.ua +kharkov.ua +kherson.ua +khmelnitskiy.ua +khmelnytskyi.ua +kiev.ua +kirovograd.ua +km.ua +kr.ua +krym.ua +ks.ua +kv.ua +kyiv.ua +lg.ua +lt.ua +lugansk.ua +lutsk.ua +lv.ua +lviv.ua +mk.ua +mykolaiv.ua +nikolaev.ua +od.ua +odesa.ua +odessa.ua +pl.ua +poltava.ua +rivne.ua +rovno.ua +rv.ua +sb.ua +sebastopol.ua +sevastopol.ua +sm.ua +sumy.ua +te.ua +ternopil.ua +uz.ua +uzhgorod.ua +vinnica.ua +vinnytsia.ua +vn.ua +volyn.ua +yalta.ua +zaporizhzhe.ua +zaporizhzhia.ua +zhitomir.ua +zhytomyr.ua +zp.ua +zt.ua + +// ug : https://www.registry.co.ug/ +ug +co.ug +or.ug +ac.ug +sc.ug +go.ug +ne.ug +com.ug +org.ug + +// uk : https://en.wikipedia.org/wiki/.uk +// Submitted by registry +uk +ac.uk +co.uk +gov.uk +ltd.uk +me.uk +net.uk +nhs.uk +org.uk +plc.uk +police.uk +*.sch.uk + +// us : https://en.wikipedia.org/wiki/.us +us +dni.us +fed.us +isa.us +kids.us +nsn.us +// us geographic names +ak.us +al.us +ar.us +as.us +az.us +ca.us +co.us +ct.us +dc.us +de.us +fl.us +ga.us +gu.us +hi.us +ia.us +id.us +il.us +in.us +ks.us +ky.us +la.us +ma.us +md.us +me.us +mi.us +mn.us +mo.us +ms.us +mt.us +nc.us +nd.us +ne.us +nh.us +nj.us +nm.us +nv.us +ny.us +oh.us +ok.us +or.us +pa.us +pr.us +ri.us +sc.us +sd.us +tn.us +tx.us +ut.us +vi.us +vt.us +va.us +wa.us +wi.us +wv.us +wy.us +// The registrar notes several more specific domains available in each state, +// such as state.*.us, dst.*.us, etc., but resolution of these is somewhat +// haphazard; in some states these domains resolve as addresses, while in others +// only subdomains are available, or even nothing at all. We include the +// most common ones where it's clear that different sites are different +// entities. +k12.ak.us +k12.al.us +k12.ar.us +k12.as.us +k12.az.us +k12.ca.us +k12.co.us +k12.ct.us +k12.dc.us +k12.de.us +k12.fl.us +k12.ga.us +k12.gu.us +// k12.hi.us Bug 614565 - Hawaii has a state-wide DOE login +k12.ia.us +k12.id.us +k12.il.us +k12.in.us +k12.ks.us +k12.ky.us +k12.la.us +k12.ma.us +k12.md.us +k12.me.us +k12.mi.us +k12.mn.us +k12.mo.us +k12.ms.us +k12.mt.us +k12.nc.us +// k12.nd.us Bug 1028347 - Removed at request of Travis Rosso +k12.ne.us +k12.nh.us +k12.nj.us +k12.nm.us +k12.nv.us +k12.ny.us +k12.oh.us +k12.ok.us +k12.or.us +k12.pa.us +k12.pr.us +k12.ri.us +k12.sc.us +// k12.sd.us Bug 934131 - Removed at request of James Booze +k12.tn.us +k12.tx.us +k12.ut.us +k12.vi.us +k12.vt.us +k12.va.us +k12.wa.us +k12.wi.us +// k12.wv.us Bug 947705 - Removed at request of Verne Britton +k12.wy.us +cc.ak.us +cc.al.us +cc.ar.us +cc.as.us +cc.az.us +cc.ca.us +cc.co.us +cc.ct.us +cc.dc.us +cc.de.us +cc.fl.us +cc.ga.us +cc.gu.us +cc.hi.us +cc.ia.us +cc.id.us +cc.il.us +cc.in.us +cc.ks.us +cc.ky.us +cc.la.us +cc.ma.us +cc.md.us +cc.me.us +cc.mi.us +cc.mn.us +cc.mo.us +cc.ms.us +cc.mt.us +cc.nc.us +cc.nd.us +cc.ne.us +cc.nh.us +cc.nj.us +cc.nm.us +cc.nv.us +cc.ny.us +cc.oh.us +cc.ok.us +cc.or.us +cc.pa.us +cc.pr.us +cc.ri.us +cc.sc.us +cc.sd.us +cc.tn.us +cc.tx.us +cc.ut.us +cc.vi.us +cc.vt.us +cc.va.us +cc.wa.us +cc.wi.us +cc.wv.us +cc.wy.us +lib.ak.us +lib.al.us +lib.ar.us +lib.as.us +lib.az.us +lib.ca.us +lib.co.us +lib.ct.us +lib.dc.us +// lib.de.us Issue #243 - Moved to Private section at request of Ed Moore +lib.fl.us +lib.ga.us +lib.gu.us +lib.hi.us +lib.ia.us +lib.id.us +lib.il.us +lib.in.us +lib.ks.us +lib.ky.us +lib.la.us +lib.ma.us +lib.md.us +lib.me.us +lib.mi.us +lib.mn.us +lib.mo.us +lib.ms.us +lib.mt.us +lib.nc.us +lib.nd.us +lib.ne.us +lib.nh.us +lib.nj.us +lib.nm.us +lib.nv.us +lib.ny.us +lib.oh.us +lib.ok.us +lib.or.us +lib.pa.us +lib.pr.us +lib.ri.us +lib.sc.us +lib.sd.us +lib.tn.us +lib.tx.us +lib.ut.us +lib.vi.us +lib.vt.us +lib.va.us +lib.wa.us +lib.wi.us +// lib.wv.us Bug 941670 - Removed at request of Larry W Arnold +lib.wy.us +// k12.ma.us contains school districts in Massachusetts. The 4LDs are +// managed independently except for private (PVT), charter (CHTR) and +// parochial (PAROCH) schools. Those are delegated directly to the +// 5LD operators. +pvt.k12.ma.us +chtr.k12.ma.us +paroch.k12.ma.us + +// uy : http://www.nic.org.uy/ +uy +com.uy +edu.uy +gub.uy +mil.uy +net.uy +org.uy + +// uz : http://www.reg.uz/ +uz +co.uz +com.uz +net.uz +org.uz + +// va : https://en.wikipedia.org/wiki/.va +va + +// vc : https://en.wikipedia.org/wiki/.vc +// Submitted by registry +vc +com.vc +net.vc +org.vc +gov.vc +mil.vc +edu.vc + +// ve : https://registro.nic.ve/ +// Submitted by registry +ve +arts.ve +co.ve +com.ve +e12.ve +edu.ve +firm.ve +gob.ve +gov.ve +info.ve +int.ve +mil.ve +net.ve +org.ve +rec.ve +store.ve +tec.ve +web.ve + +// vg : https://en.wikipedia.org/wiki/.vg +vg + +// vi : http://www.nic.vi/newdomainform.htm +// http://www.nic.vi/Domain_Rules/body_domain_rules.html indicates some other +// TLDs are "reserved", such as edu.vi and gov.vi, but doesn't actually say they +// are available for registration (which they do not seem to be). +vi +co.vi +com.vi +k12.vi +net.vi +org.vi + +// vn : https://www.dot.vn/vnnic/vnnic/domainregistration.jsp +vn +com.vn +net.vn +org.vn +edu.vn +gov.vn +int.vn +ac.vn +biz.vn +info.vn +name.vn +pro.vn +health.vn + +// vu : https://en.wikipedia.org/wiki/.vu +// http://www.vunic.vu/ +vu +com.vu +edu.vu +net.vu +org.vu + +// wf : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf +wf + +// ws : https://en.wikipedia.org/wiki/.ws +// http://samoanic.ws/index.dhtml +ws +com.ws +net.ws +org.ws +gov.ws +edu.ws + +// yt : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf +yt + +// IDN ccTLDs +// When submitting patches, please maintain a sort by ISO 3166 ccTLD, then +// U-label, and follow this format: +// // A-Label ("", [, variant info]) : +// // [sponsoring org] +// U-Label + +// xn--mgbaam7a8h ("Emerat", Arabic) : AE +// http://nic.ae/english/arabicdomain/rules.jsp +امارات + +// xn--y9a3aq ("hye", Armenian) : AM +// ISOC AM (operated by .am Registry) +հայ + +// xn--54b7fta0cc ("Bangla", Bangla) : BD +বাংলা + +// xn--90ais ("bel", Belarusian/Russian Cyrillic) : BY +// Operated by .by registry +бел + +// xn--fiqs8s ("Zhongguo/China", Chinese, Simplified) : CN +// CNNIC +// http://cnnic.cn/html/Dir/2005/10/11/3218.htm +中国 + +// xn--fiqz9s ("Zhongguo/China", Chinese, Traditional) : CN +// CNNIC +// http://cnnic.cn/html/Dir/2005/10/11/3218.htm +中國 + +// xn--lgbbat1ad8j ("Algeria/Al Jazair", Arabic) : DZ +الجزائر + +// xn--wgbh1c ("Egypt/Masr", Arabic) : EG +// http://www.dotmasr.eg/ +مصر + +// xn--e1a4c ("eu", Cyrillic) : EU +ею + +// xn--node ("ge", Georgian Mkhedruli) : GE +გე + +// xn--qxam ("el", Greek) : GR +// Hellenic Ministry of Infrastructure, Transport, and Networks +ελ + +// xn--j6w193g ("Hong Kong", Chinese) : HK +// https://www2.hkirc.hk/register/rules.jsp +香港 + +// xn--h2brj9c ("Bharat", Devanagari) : IN +// India +भारत + +// xn--mgbbh1a71e ("Bharat", Arabic) : IN +// India +بھارت + +// xn--fpcrj9c3d ("Bharat", Telugu) : IN +// India +భారత్ + +// xn--gecrj9c ("Bharat", Gujarati) : IN +// India +ભારત + +// xn--s9brj9c ("Bharat", Gurmukhi) : IN +// India +ਭਾਰਤ + +// xn--45brj9c ("Bharat", Bengali) : IN +// India +ভারত + +// xn--xkc2dl3a5ee0h ("India", Tamil) : IN +// India +இந்தியா + +// xn--mgba3a4f16a ("Iran", Persian) : IR +ایران + +// xn--mgba3a4fra ("Iran", Arabic) : IR +ايران + +// xn--mgbtx2b ("Iraq", Arabic) : IQ +// Communications and Media Commission +عراق + +// xn--mgbayh7gpa ("al-Ordon", Arabic) : JO +// National Information Technology Center (NITC) +// Royal Scientific Society, Al-Jubeiha +الاردن + +// xn--3e0b707e ("Republic of Korea", Hangul) : KR +한국 + +// xn--80ao21a ("Kaz", Kazakh) : KZ +қаз + +// xn--fzc2c9e2c ("Lanka", Sinhalese-Sinhala) : LK +// http://nic.lk +ලංකා + +// xn--xkc2al3hye2a ("Ilangai", Tamil) : LK +// http://nic.lk +இலங்கை + +// xn--mgbc0a9azcg ("Morocco/al-Maghrib", Arabic) : MA +المغرب + +// xn--d1alf ("mkd", Macedonian) : MK +// MARnet +мкд + +// xn--l1acc ("mon", Mongolian) : MN +мон + +// xn--mix891f ("Macao", Chinese, Traditional) : MO +// MONIC / HNET Asia (Registry Operator for .mo) +澳門 + +// xn--mix082f ("Macao", Chinese, Simplified) : MO +澳门 + +// xn--mgbx4cd0ab ("Malaysia", Malay) : MY +مليسيا + +// xn--mgb9awbf ("Oman", Arabic) : OM +عمان + +// xn--mgbai9azgqp6j ("Pakistan", Urdu/Arabic) : PK +پاکستان + +// xn--mgbai9a5eva00b ("Pakistan", Urdu/Arabic, variant) : PK +پاكستان + +// xn--ygbi2ammx ("Falasteen", Arabic) : PS +// The Palestinian National Internet Naming Authority (PNINA) +// http://www.pnina.ps +فلسطين + +// xn--90a3ac ("srb", Cyrillic) : RS +// https://www.rnids.rs/en/domains/national-domains +срб +пр.срб +орг.срб +обр.срб +од.срб +упр.срб +ак.срб + +// xn--p1ai ("rf", Russian-Cyrillic) : RU +// http://www.cctld.ru/en/docs/rulesrf.php +рф + +// xn--wgbl6a ("Qatar", Arabic) : QA +// http://www.ict.gov.qa/ +قطر + +// xn--mgberp4a5d4ar ("AlSaudiah", Arabic) : SA +// http://www.nic.net.sa/ +السعودية + +// xn--mgberp4a5d4a87g ("AlSaudiah", Arabic, variant) : SA +السعودیة + +// xn--mgbqly7c0a67fbc ("AlSaudiah", Arabic, variant) : SA +السعودیۃ + +// xn--mgbqly7cvafr ("AlSaudiah", Arabic, variant) : SA +السعوديه + +// xn--mgbpl2fh ("sudan", Arabic) : SD +// Operated by .sd registry +سودان + +// xn--yfro4i67o Singapore ("Singapore", Chinese) : SG +新加坡 + +// xn--clchc0ea0b2g2a9gcd ("Singapore", Tamil) : SG +சிங்கப்பூர் + +// xn--ogbpf8fl ("Syria", Arabic) : SY +سورية + +// xn--mgbtf8fl ("Syria", Arabic, variant) : SY +سوريا + +// xn--o3cw4h ("Thai", Thai) : TH +// http://www.thnic.co.th +ไทย + +// xn--pgbs0dh ("Tunisia", Arabic) : TN +// http://nic.tn +تونس + +// xn--kpry57d ("Taiwan", Chinese, Traditional) : TW +// http://www.twnic.net/english/dn/dn_07a.htm +台灣 + +// xn--kprw13d ("Taiwan", Chinese, Simplified) : TW +// http://www.twnic.net/english/dn/dn_07a.htm +台湾 + +// xn--nnx388a ("Taiwan", Chinese, variant) : TW +臺灣 + +// xn--j1amh ("ukr", Cyrillic) : UA +укр + +// xn--mgb2ddes ("AlYemen", Arabic) : YE +اليمن + +// xxx : http://icmregistry.com +xxx + +// ye : http://www.y.net.ye/services/domain_name.htm +*.ye + +// za : http://www.zadna.org.za/content/page/domain-information +ac.za +agric.za +alt.za +co.za +edu.za +gov.za +grondar.za +law.za +mil.za +net.za +ngo.za +nis.za +nom.za +org.za +school.za +tm.za +web.za + +// zm : https://zicta.zm/ +// Submitted by registry +zm +ac.zm +biz.zm +co.zm +com.zm +edu.zm +gov.zm +info.zm +mil.zm +net.zm +org.zm +sch.zm + +// zw : https://www.potraz.gov.zw/ +// Confirmed by registry 2017-01-25 +zw +ac.zw +co.zw +gov.zw +mil.zw +org.zw + +// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2017-02-23T00:46:09Z + +// aaa : 2015-02-26 American Automobile Association, Inc. +aaa + +// aarp : 2015-05-21 AARP +aarp + +// abarth : 2015-07-30 Fiat Chrysler Automobiles N.V. +abarth + +// abb : 2014-10-24 ABB Ltd +abb + +// abbott : 2014-07-24 Abbott Laboratories, Inc. +abbott + +// abbvie : 2015-07-30 AbbVie Inc. +abbvie + +// abc : 2015-07-30 Disney Enterprises, Inc. +abc + +// able : 2015-06-25 Able Inc. +able + +// abogado : 2014-04-24 Top Level Domain Holdings Limited +abogado + +// abudhabi : 2015-07-30 Abu Dhabi Systems and Information Centre +abudhabi + +// academy : 2013-11-07 Half Oaks, LLC +academy + +// accenture : 2014-08-15 Accenture plc +accenture + +// accountant : 2014-11-20 dot Accountant Limited +accountant + +// accountants : 2014-03-20 Knob Town, LLC +accountants + +// aco : 2015-01-08 ACO Severin Ahlmann GmbH & Co. KG +aco + +// active : 2014-05-01 The Active Network, Inc +active + +// actor : 2013-12-12 United TLD Holdco Ltd. +actor + +// adac : 2015-07-16 Allgemeiner Deutscher Automobil-Club e.V. (ADAC) +adac + +// ads : 2014-12-04 Charleston Road Registry Inc. +ads + +// adult : 2014-10-16 ICM Registry AD LLC +adult + +// aeg : 2015-03-19 Aktiebolaget Electrolux +aeg + +// aetna : 2015-05-21 Aetna Life Insurance Company +aetna + +// afamilycompany : 2015-07-23 Johnson Shareholdings, Inc. +afamilycompany + +// afl : 2014-10-02 Australian Football League +afl + +// africa : 2014-03-24 ZA Central Registry NPC trading as Registry.Africa +africa + +// agakhan : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation) +agakhan + +// agency : 2013-11-14 Steel Falls, LLC +agency + +// aig : 2014-12-18 American International Group, Inc. +aig + +// aigo : 2015-08-06 aigo Digital Technology Co,Ltd. +aigo + +// airbus : 2015-07-30 Airbus S.A.S. +airbus + +// airforce : 2014-03-06 United TLD Holdco Ltd. +airforce + +// airtel : 2014-10-24 Bharti Airtel Limited +airtel + +// akdn : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation) +akdn + +// alfaromeo : 2015-07-31 Fiat Chrysler Automobiles N.V. +alfaromeo + +// alibaba : 2015-01-15 Alibaba Group Holding Limited +alibaba + +// alipay : 2015-01-15 Alibaba Group Holding Limited +alipay + +// allfinanz : 2014-07-03 Allfinanz Deutsche Vermögensberatung Aktiengesellschaft +allfinanz + +// allstate : 2015-07-31 Allstate Fire and Casualty Insurance Company +allstate + +// ally : 2015-06-18 Ally Financial Inc. +ally + +// alsace : 2014-07-02 REGION D ALSACE +alsace + +// alstom : 2015-07-30 ALSTOM +alstom + +// americanexpress : 2015-07-31 American Express Travel Related Services Company, Inc. +americanexpress + +// americanfamily : 2015-07-23 AmFam, Inc. +americanfamily + +// amex : 2015-07-31 American Express Travel Related Services Company, Inc. +amex + +// amfam : 2015-07-23 AmFam, Inc. +amfam + +// amica : 2015-05-28 Amica Mutual Insurance Company +amica + +// amsterdam : 2014-07-24 Gemeente Amsterdam +amsterdam + +// analytics : 2014-12-18 Campus IP LLC +analytics + +// android : 2014-08-07 Charleston Road Registry Inc. +android + +// anquan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. +anquan + +// anz : 2015-07-31 Australia and New Zealand Banking Group Limited +anz + +// aol : 2015-09-17 AOL Inc. +aol + +// apartments : 2014-12-11 June Maple, LLC +apartments + +// app : 2015-05-14 Charleston Road Registry Inc. +app + +// apple : 2015-05-14 Apple Inc. +apple + +// aquarelle : 2014-07-24 Aquarelle.com +aquarelle + +// arab : 2015-11-12 League of Arab States +arab + +// aramco : 2014-11-20 Aramco Services Company +aramco + +// archi : 2014-02-06 STARTING DOT LIMITED +archi + +// army : 2014-03-06 United TLD Holdco Ltd. +army + +// art : 2016-03-24 UK Creative Ideas Limited +art + +// arte : 2014-12-11 Association Relative à la Télévision Européenne G.E.I.E. +arte + +// asda : 2015-07-31 Wal-Mart Stores, Inc. +asda + +// associates : 2014-03-06 Baxter Hill, LLC +associates + +// athleta : 2015-07-30 The Gap, Inc. +athleta + +// attorney : 2014-03-20 +attorney + +// auction : 2014-03-20 +auction + +// audi : 2015-05-21 AUDI Aktiengesellschaft +audi + +// audible : 2015-06-25 Amazon EU S.à r.l. +audible + +// audio : 2014-03-20 Uniregistry, Corp. +audio + +// auspost : 2015-08-13 Australian Postal Corporation +auspost + +// author : 2014-12-18 Amazon EU S.à r.l. +author + +// auto : 2014-11-13 +auto + +// autos : 2014-01-09 DERAutos, LLC +autos + +// avianca : 2015-01-08 Aerovias del Continente Americano S.A. Avianca +avianca + +// aws : 2015-06-25 Amazon EU S.à r.l. +aws + +// axa : 2013-12-19 AXA SA +axa + +// azure : 2014-12-18 Microsoft Corporation +azure + +// baby : 2015-04-09 Johnson & Johnson Services, Inc. +baby + +// baidu : 2015-01-08 Baidu, Inc. +baidu + +// banamex : 2015-07-30 Citigroup Inc. +banamex + +// bananarepublic : 2015-07-31 The Gap, Inc. +bananarepublic + +// band : 2014-06-12 +band + +// bank : 2014-09-25 fTLD Registry Services LLC +bank + +// bar : 2013-12-12 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable +bar + +// barcelona : 2014-07-24 Municipi de Barcelona +barcelona + +// barclaycard : 2014-11-20 Barclays Bank PLC +barclaycard + +// barclays : 2014-11-20 Barclays Bank PLC +barclays + +// barefoot : 2015-06-11 Gallo Vineyards, Inc. +barefoot + +// bargains : 2013-11-14 Half Hallow, LLC +bargains + +// baseball : 2015-10-29 MLB Advanced Media DH, LLC +baseball + +// basketball : 2015-08-20 Fédération Internationale de Basketball (FIBA) +basketball + +// bauhaus : 2014-04-17 Werkhaus GmbH +bauhaus + +// bayern : 2014-01-23 Bayern Connect GmbH +bayern + +// bbc : 2014-12-18 British Broadcasting Corporation +bbc + +// bbt : 2015-07-23 BB&T Corporation +bbt + +// bbva : 2014-10-02 BANCO BILBAO VIZCAYA ARGENTARIA, S.A. +bbva + +// bcg : 2015-04-02 The Boston Consulting Group, Inc. +bcg + +// bcn : 2014-07-24 Municipi de Barcelona +bcn + +// beats : 2015-05-14 Beats Electronics, LLC +beats + +// beauty : 2015-12-03 L'Oréal +beauty + +// beer : 2014-01-09 Top Level Domain Holdings Limited +beer + +// bentley : 2014-12-18 Bentley Motors Limited +bentley + +// berlin : 2013-10-31 dotBERLIN GmbH & Co. KG +berlin + +// best : 2013-12-19 BestTLD Pty Ltd +best + +// bestbuy : 2015-07-31 BBY Solutions, Inc. +bestbuy + +// bet : 2015-05-07 Afilias plc +bet + +// bharti : 2014-01-09 Bharti Enterprises (Holding) Private Limited +bharti + +// bible : 2014-06-19 American Bible Society +bible + +// bid : 2013-12-19 dot Bid Limited +bid + +// bike : 2013-08-27 Grand Hollow, LLC +bike + +// bing : 2014-12-18 Microsoft Corporation +bing + +// bingo : 2014-12-04 Sand Cedar, LLC +bingo + +// bio : 2014-03-06 STARTING DOT LIMITED +bio + +// black : 2014-01-16 Afilias Limited +black + +// blackfriday : 2014-01-16 Uniregistry, Corp. +blackfriday + +// blanco : 2015-07-16 BLANCO GmbH + Co KG +blanco + +// blockbuster : 2015-07-30 Dish DBS Corporation +blockbuster + +// blog : 2015-05-14 +blog + +// bloomberg : 2014-07-17 Bloomberg IP Holdings LLC +bloomberg + +// blue : 2013-11-07 Afilias Limited +blue + +// bms : 2014-10-30 Bristol-Myers Squibb Company +bms + +// bmw : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft +bmw + +// bnl : 2014-07-24 Banca Nazionale del Lavoro +bnl + +// bnpparibas : 2014-05-29 BNP Paribas +bnpparibas + +// boats : 2014-12-04 DERBoats, LLC +boats + +// boehringer : 2015-07-09 Boehringer Ingelheim International GmbH +boehringer + +// bofa : 2015-07-31 NMS Services, Inc. +bofa + +// bom : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br +bom + +// bond : 2014-06-05 Bond University Limited +bond + +// boo : 2014-01-30 Charleston Road Registry Inc. +boo + +// book : 2015-08-27 Amazon EU S.à r.l. +book + +// booking : 2015-07-16 Booking.com B.V. +booking + +// boots : 2015-01-08 THE BOOTS COMPANY PLC +boots + +// bosch : 2015-06-18 Robert Bosch GMBH +bosch + +// bostik : 2015-05-28 Bostik SA +bostik + +// boston : 2015-12-10 +boston + +// bot : 2014-12-18 Amazon EU S.à r.l. +bot + +// boutique : 2013-11-14 Over Galley, LLC +boutique + +// box : 2015-11-12 NS1 Limited +box + +// bradesco : 2014-12-18 Banco Bradesco S.A. +bradesco + +// bridgestone : 2014-12-18 Bridgestone Corporation +bridgestone + +// broadway : 2014-12-22 Celebrate Broadway, Inc. +broadway + +// broker : 2014-12-11 IG Group Holdings PLC +broker + +// brother : 2015-01-29 Brother Industries, Ltd. +brother + +// brussels : 2014-02-06 DNS.be vzw +brussels + +// budapest : 2013-11-21 Top Level Domain Holdings Limited +budapest + +// bugatti : 2015-07-23 Bugatti International SA +bugatti + +// build : 2013-11-07 Plan Bee LLC +build + +// builders : 2013-11-07 Atomic Madison, LLC +builders + +// business : 2013-11-07 Spring Cross, LLC +business + +// buy : 2014-12-18 Amazon EU S.à r.l. +buy + +// buzz : 2013-10-02 DOTSTRATEGY CO. +buzz + +// bzh : 2014-02-27 Association www.bzh +bzh + +// cab : 2013-10-24 Half Sunset, LLC +cab + +// cafe : 2015-02-11 Pioneer Canyon, LLC +cafe + +// cal : 2014-07-24 Charleston Road Registry Inc. +cal + +// call : 2014-12-18 Amazon EU S.à r.l. +call + +// calvinklein : 2015-07-30 PVH gTLD Holdings LLC +calvinklein + +// cam : 2016-04-21 AC Webconnecting Holding B.V. +cam + +// camera : 2013-08-27 Atomic Maple, LLC +camera + +// camp : 2013-11-07 Delta Dynamite, LLC +camp + +// cancerresearch : 2014-05-15 Australian Cancer Research Foundation +cancerresearch + +// canon : 2014-09-12 Canon Inc. +canon + +// capetown : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry +capetown + +// capital : 2014-03-06 Delta Mill, LLC +capital + +// capitalone : 2015-08-06 Capital One Financial Corporation +capitalone + +// car : 2015-01-22 +car + +// caravan : 2013-12-12 Caravan International, Inc. +caravan + +// cards : 2013-12-05 Foggy Hollow, LLC +cards + +// care : 2014-03-06 Goose Cross +care + +// career : 2013-10-09 dotCareer LLC +career + +// careers : 2013-10-02 Wild Corner, LLC +careers + +// cars : 2014-11-13 +cars + +// cartier : 2014-06-23 Richemont DNS Inc. +cartier + +// casa : 2013-11-21 Top Level Domain Holdings Limited +casa + +// case : 2015-09-03 CNH Industrial N.V. +case + +// caseih : 2015-09-03 CNH Industrial N.V. +caseih + +// cash : 2014-03-06 Delta Lake, LLC +cash + +// casino : 2014-12-18 Binky Sky, LLC +casino + +// catering : 2013-12-05 New Falls. LLC +catering + +// catholic : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +catholic + +// cba : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA +cba + +// cbn : 2014-08-22 The Christian Broadcasting Network, Inc. +cbn + +// cbre : 2015-07-02 CBRE, Inc. +cbre + +// cbs : 2015-08-06 CBS Domains Inc. +cbs + +// ceb : 2015-04-09 The Corporate Executive Board Company +ceb + +// center : 2013-11-07 Tin Mill, LLC +center + +// ceo : 2013-11-07 CEOTLD Pty Ltd +ceo + +// cern : 2014-06-05 European Organization for Nuclear Research ("CERN") +cern + +// cfa : 2014-08-28 CFA Institute +cfa + +// cfd : 2014-12-11 IG Group Holdings PLC +cfd + +// chanel : 2015-04-09 Chanel International B.V. +chanel + +// channel : 2014-05-08 Charleston Road Registry Inc. +channel + +// chase : 2015-04-30 JPMorgan Chase & Co. +chase + +// chat : 2014-12-04 Sand Fields, LLC +chat + +// cheap : 2013-11-14 Sand Cover, LLC +cheap + +// chintai : 2015-06-11 CHINTAI Corporation +chintai + +// chloe : 2014-10-16 Richemont DNS Inc. +chloe + +// christmas : 2013-11-21 Uniregistry, Corp. +christmas + +// chrome : 2014-07-24 Charleston Road Registry Inc. +chrome + +// chrysler : 2015-07-30 FCA US LLC. +chrysler + +// church : 2014-02-06 Holly Fields, LLC +church + +// cipriani : 2015-02-19 Hotel Cipriani Srl +cipriani + +// circle : 2014-12-18 Amazon EU S.à r.l. +circle + +// cisco : 2014-12-22 Cisco Technology, Inc. +cisco + +// citadel : 2015-07-23 Citadel Domain LLC +citadel + +// citi : 2015-07-30 Citigroup Inc. +citi + +// citic : 2014-01-09 CITIC Group Corporation +citic + +// city : 2014-05-29 Snow Sky, LLC +city + +// cityeats : 2014-12-11 Lifestyle Domain Holdings, Inc. +cityeats + +// claims : 2014-03-20 Black Corner, LLC +claims + +// cleaning : 2013-12-05 Fox Shadow, LLC +cleaning + +// click : 2014-06-05 Uniregistry, Corp. +click + +// clinic : 2014-03-20 Goose Park, LLC +clinic + +// clinique : 2015-10-01 The Estée Lauder Companies Inc. +clinique + +// clothing : 2013-08-27 Steel Lake, LLC +clothing + +// cloud : 2015-04-16 ARUBA S.p.A. +cloud + +// club : 2013-11-08 .CLUB DOMAINS, LLC +club + +// clubmed : 2015-06-25 Club Méditerranée S.A. +clubmed + +// coach : 2014-10-09 Koko Island, LLC +coach + +// codes : 2013-10-31 Puff Willow, LLC +codes + +// coffee : 2013-10-17 Trixy Cover, LLC +coffee + +// college : 2014-01-16 XYZ.COM LLC +college + +// cologne : 2014-02-05 NetCologne Gesellschaft für Telekommunikation mbH +cologne + +// comcast : 2015-07-23 Comcast IP Holdings I, LLC +comcast + +// commbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA +commbank + +// community : 2013-12-05 Fox Orchard, LLC +community + +// company : 2013-11-07 Silver Avenue, LLC +company + +// compare : 2015-10-08 iSelect Ltd +compare + +// computer : 2013-10-24 Pine Mill, LLC +computer + +// comsec : 2015-01-08 VeriSign, Inc. +comsec + +// condos : 2013-12-05 Pine House, LLC +condos + +// construction : 2013-09-16 Fox Dynamite, LLC +construction + +// consulting : 2013-12-05 +consulting + +// contact : 2015-01-08 Top Level Spectrum, Inc. +contact + +// contractors : 2013-09-10 Magic Woods, LLC +contractors + +// cooking : 2013-11-21 Top Level Domain Holdings Limited +cooking + +// cookingchannel : 2015-07-02 Lifestyle Domain Holdings, Inc. +cookingchannel + +// cool : 2013-11-14 Koko Lake, LLC +cool + +// corsica : 2014-09-25 Collectivité Territoriale de Corse +corsica + +// country : 2013-12-19 Top Level Domain Holdings Limited +country + +// coupon : 2015-02-26 Amazon EU S.à r.l. +coupon + +// coupons : 2015-03-26 Black Island, LLC +coupons + +// courses : 2014-12-04 OPEN UNIVERSITIES AUSTRALIA PTY LTD +courses + +// credit : 2014-03-20 Snow Shadow, LLC +credit + +// creditcard : 2014-03-20 Binky Frostbite, LLC +creditcard + +// creditunion : 2015-01-22 CUNA Performance Resources, LLC +creditunion + +// cricket : 2014-10-09 dot Cricket Limited +cricket + +// crown : 2014-10-24 Crown Equipment Corporation +crown + +// crs : 2014-04-03 Federated Co-operatives Limited +crs + +// cruise : 2015-12-10 Viking River Cruises (Bermuda) Ltd. +cruise + +// cruises : 2013-12-05 Spring Way, LLC +cruises + +// csc : 2014-09-25 Alliance-One Services, Inc. +csc + +// cuisinella : 2014-04-03 SALM S.A.S. +cuisinella + +// cymru : 2014-05-08 Nominet UK +cymru + +// cyou : 2015-01-22 Beijing Gamease Age Digital Technology Co., Ltd. +cyou + +// dabur : 2014-02-06 Dabur India Limited +dabur + +// dad : 2014-01-23 Charleston Road Registry Inc. +dad + +// dance : 2013-10-24 United TLD Holdco Ltd. +dance + +// data : 2016-06-02 Dish DBS Corporation +data + +// date : 2014-11-20 dot Date Limited +date + +// dating : 2013-12-05 Pine Fest, LLC +dating + +// datsun : 2014-03-27 NISSAN MOTOR CO., LTD. +datsun + +// day : 2014-01-30 Charleston Road Registry Inc. +day + +// dclk : 2014-11-20 Charleston Road Registry Inc. +dclk + +// dds : 2015-05-07 Top Level Domain Holdings Limited +dds + +// deal : 2015-06-25 Amazon EU S.à r.l. +deal + +// dealer : 2014-12-22 Dealer Dot Com, Inc. +dealer + +// deals : 2014-05-22 Sand Sunset, LLC +deals + +// degree : 2014-03-06 +degree + +// delivery : 2014-09-11 Steel Station, LLC +delivery + +// dell : 2014-10-24 Dell Inc. +dell + +// deloitte : 2015-07-31 Deloitte Touche Tohmatsu +deloitte + +// delta : 2015-02-19 Delta Air Lines, Inc. +delta + +// democrat : 2013-10-24 United TLD Holdco Ltd. +democrat + +// dental : 2014-03-20 Tin Birch, LLC +dental + +// dentist : 2014-03-20 +dentist + +// desi : 2013-11-14 Desi Networks LLC +desi + +// design : 2014-11-07 Top Level Design, LLC +design + +// dev : 2014-10-16 Charleston Road Registry Inc. +dev + +// dhl : 2015-07-23 Deutsche Post AG +dhl + +// diamonds : 2013-09-22 John Edge, LLC +diamonds + +// diet : 2014-06-26 Uniregistry, Corp. +diet + +// digital : 2014-03-06 Dash Park, LLC +digital + +// direct : 2014-04-10 Half Trail, LLC +direct + +// directory : 2013-09-20 Extra Madison, LLC +directory + +// discount : 2014-03-06 Holly Hill, LLC +discount + +// discover : 2015-07-23 Discover Financial Services +discover + +// dish : 2015-07-30 Dish DBS Corporation +dish + +// diy : 2015-11-05 Lifestyle Domain Holdings, Inc. +diy + +// dnp : 2013-12-13 Dai Nippon Printing Co., Ltd. +dnp + +// docs : 2014-10-16 Charleston Road Registry Inc. +docs + +// doctor : 2016-06-02 Brice Trail, LLC +doctor + +// dodge : 2015-07-30 FCA US LLC. +dodge + +// dog : 2014-12-04 Koko Mill, LLC +dog + +// doha : 2014-09-18 Communications Regulatory Authority (CRA) +doha + +// domains : 2013-10-17 Sugar Cross, LLC +domains + +// dot : 2015-05-21 Dish DBS Corporation +dot + +// download : 2014-11-20 dot Support Limited +download + +// drive : 2015-03-05 Charleston Road Registry Inc. +drive + +// dtv : 2015-06-04 Dish DBS Corporation +dtv + +// dubai : 2015-01-01 Dubai Smart Government Department +dubai + +// duck : 2015-07-23 Johnson Shareholdings, Inc. +duck + +// dunlop : 2015-07-02 The Goodyear Tire & Rubber Company +dunlop + +// duns : 2015-08-06 The Dun & Bradstreet Corporation +duns + +// dupont : 2015-06-25 E. I. du Pont de Nemours and Company +dupont + +// durban : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry +durban + +// dvag : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG +dvag + +// dvr : 2016-05-26 Hughes Satellite Systems Corporation +dvr + +// earth : 2014-12-04 Interlink Co., Ltd. +earth + +// eat : 2014-01-23 Charleston Road Registry Inc. +eat + +// eco : 2016-07-08 Big Room Inc. +eco + +// edeka : 2014-12-18 EDEKA Verband kaufmännischer Genossenschaften e.V. +edeka + +// education : 2013-11-07 Brice Way, LLC +education + +// email : 2013-10-31 Spring Madison, LLC +email + +// emerck : 2014-04-03 Merck KGaA +emerck + +// energy : 2014-09-11 Binky Birch, LLC +energy + +// engineer : 2014-03-06 United TLD Holdco Ltd. +engineer + +// engineering : 2014-03-06 Romeo Canyon +engineering + +// enterprises : 2013-09-20 Snow Oaks, LLC +enterprises + +// epost : 2015-07-23 Deutsche Post AG +epost + +// epson : 2014-12-04 Seiko Epson Corporation +epson + +// equipment : 2013-08-27 Corn Station, LLC +equipment + +// ericsson : 2015-07-09 Telefonaktiebolaget L M Ericsson +ericsson + +// erni : 2014-04-03 ERNI Group Holding AG +erni + +// esq : 2014-05-08 Charleston Road Registry Inc. +esq + +// estate : 2013-08-27 Trixy Park, LLC +estate + +// esurance : 2015-07-23 Esurance Insurance Company +esurance + +// etisalat : 2015-09-03 Emirates Telecommunications Corporation (trading as Etisalat) +etisalat + +// eurovision : 2014-04-24 European Broadcasting Union (EBU) +eurovision + +// eus : 2013-12-12 Puntueus Fundazioa +eus + +// events : 2013-12-05 Pioneer Maple, LLC +events + +// everbank : 2014-05-15 EverBank +everbank + +// exchange : 2014-03-06 Spring Falls, LLC +exchange + +// expert : 2013-11-21 Magic Pass, LLC +expert + +// exposed : 2013-12-05 Victor Beach, LLC +exposed + +// express : 2015-02-11 Sea Sunset, LLC +express + +// extraspace : 2015-05-14 Extra Space Storage LLC +extraspace + +// fage : 2014-12-18 Fage International S.A. +fage + +// fail : 2014-03-06 Atomic Pipe, LLC +fail + +// fairwinds : 2014-11-13 FairWinds Partners, LLC +fairwinds + +// faith : 2014-11-20 dot Faith Limited +faith + +// family : 2015-04-02 +family + +// fan : 2014-03-06 +fan + +// fans : 2014-11-07 Asiamix Digital Limited +fans + +// farm : 2013-11-07 Just Maple, LLC +farm + +// farmers : 2015-07-09 Farmers Insurance Exchange +farmers + +// fashion : 2014-07-03 Top Level Domain Holdings Limited +fashion + +// fast : 2014-12-18 Amazon EU S.à r.l. +fast + +// fedex : 2015-08-06 Federal Express Corporation +fedex + +// feedback : 2013-12-19 Top Level Spectrum, Inc. +feedback + +// ferrari : 2015-07-31 Fiat Chrysler Automobiles N.V. +ferrari + +// ferrero : 2014-12-18 Ferrero Trading Lux S.A. +ferrero + +// fiat : 2015-07-31 Fiat Chrysler Automobiles N.V. +fiat + +// fidelity : 2015-07-30 Fidelity Brokerage Services LLC +fidelity + +// fido : 2015-08-06 Rogers Communications Partnership +fido + +// film : 2015-01-08 Motion Picture Domain Registry Pty Ltd +film + +// final : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br +final + +// finance : 2014-03-20 Cotton Cypress, LLC +finance + +// financial : 2014-03-06 Just Cover, LLC +financial + +// fire : 2015-06-25 Amazon EU S.à r.l. +fire + +// firestone : 2014-12-18 Bridgestone Corporation +firestone + +// firmdale : 2014-03-27 Firmdale Holdings Limited +firmdale + +// fish : 2013-12-12 Fox Woods, LLC +fish + +// fishing : 2013-11-21 Top Level Domain Holdings Limited +fishing + +// fit : 2014-11-07 Top Level Domain Holdings Limited +fit + +// fitness : 2014-03-06 Brice Orchard, LLC +fitness + +// flickr : 2015-04-02 Yahoo! Domain Services Inc. +flickr + +// flights : 2013-12-05 Fox Station, LLC +flights + +// flir : 2015-07-23 FLIR Systems, Inc. +flir + +// florist : 2013-11-07 Half Cypress, LLC +florist + +// flowers : 2014-10-09 Uniregistry, Corp. +flowers + +// fly : 2014-05-08 Charleston Road Registry Inc. +fly + +// foo : 2014-01-23 Charleston Road Registry Inc. +foo + +// food : 2016-04-21 Lifestyle Domain Holdings, Inc. +food + +// foodnetwork : 2015-07-02 Lifestyle Domain Holdings, Inc. +foodnetwork + +// football : 2014-12-18 Foggy Farms, LLC +football + +// ford : 2014-11-13 Ford Motor Company +ford + +// forex : 2014-12-11 IG Group Holdings PLC +forex + +// forsale : 2014-05-22 +forsale + +// forum : 2015-04-02 Fegistry, LLC +forum + +// foundation : 2013-12-05 John Dale, LLC +foundation + +// fox : 2015-09-11 FOX Registry, LLC +fox + +// free : 2015-12-10 Amazon EU S.à r.l. +free + +// fresenius : 2015-07-30 Fresenius Immobilien-Verwaltungs-GmbH +fresenius + +// frl : 2014-05-15 FRLregistry B.V. +frl + +// frogans : 2013-12-19 OP3FT +frogans + +// frontdoor : 2015-07-02 Lifestyle Domain Holdings, Inc. +frontdoor + +// frontier : 2015-02-05 Frontier Communications Corporation +frontier + +// ftr : 2015-07-16 Frontier Communications Corporation +ftr + +// fujitsu : 2015-07-30 Fujitsu Limited +fujitsu + +// fujixerox : 2015-07-23 Xerox DNHC LLC +fujixerox + +// fun : 2016-01-14 +fun + +// fund : 2014-03-20 John Castle, LLC +fund + +// furniture : 2014-03-20 Lone Fields, LLC +furniture + +// futbol : 2013-09-20 +futbol + +// fyi : 2015-04-02 Silver Tigers, LLC +fyi + +// gal : 2013-11-07 Asociación puntoGAL +gal + +// gallery : 2013-09-13 Sugar House, LLC +gallery + +// gallo : 2015-06-11 Gallo Vineyards, Inc. +gallo + +// gallup : 2015-02-19 Gallup, Inc. +gallup + +// game : 2015-05-28 Uniregistry, Corp. +game + +// games : 2015-05-28 +games + +// gap : 2015-07-31 The Gap, Inc. +gap + +// garden : 2014-06-26 Top Level Domain Holdings Limited +garden + +// gbiz : 2014-07-17 Charleston Road Registry Inc. +gbiz + +// gdn : 2014-07-31 Joint Stock Company "Navigation-information systems" +gdn + +// gea : 2014-12-04 GEA Group Aktiengesellschaft +gea + +// gent : 2014-01-23 COMBELL GROUP NV/SA +gent + +// genting : 2015-03-12 Resorts World Inc Pte. Ltd. +genting + +// george : 2015-07-31 Wal-Mart Stores, Inc. +george + +// ggee : 2014-01-09 GMO Internet, Inc. +ggee + +// gift : 2013-10-17 Uniregistry, Corp. +gift + +// gifts : 2014-07-03 Goose Sky, LLC +gifts + +// gives : 2014-03-06 United TLD Holdco Ltd. +gives + +// giving : 2014-11-13 Giving Limited +giving + +// glade : 2015-07-23 Johnson Shareholdings, Inc. +glade + +// glass : 2013-11-07 Black Cover, LLC +glass + +// gle : 2014-07-24 Charleston Road Registry Inc. +gle + +// global : 2014-04-17 Dot GLOBAL AS +global + +// globo : 2013-12-19 Globo Comunicação e Participações S.A +globo + +// gmail : 2014-05-01 Charleston Road Registry Inc. +gmail + +// gmbh : 2016-01-29 Extra Dynamite, LLC +gmbh + +// gmo : 2014-01-09 GMO Internet, Inc. +gmo + +// gmx : 2014-04-24 1&1 Mail & Media GmbH +gmx + +// godaddy : 2015-07-23 Go Daddy East, LLC +godaddy + +// gold : 2015-01-22 June Edge, LLC +gold + +// goldpoint : 2014-11-20 YODOBASHI CAMERA CO.,LTD. +goldpoint + +// golf : 2014-12-18 Lone falls, LLC +golf + +// goo : 2014-12-18 NTT Resonant Inc. +goo + +// goodhands : 2015-07-31 Allstate Fire and Casualty Insurance Company +goodhands + +// goodyear : 2015-07-02 The Goodyear Tire & Rubber Company +goodyear + +// goog : 2014-11-20 Charleston Road Registry Inc. +goog + +// google : 2014-07-24 Charleston Road Registry Inc. +google + +// gop : 2014-01-16 Republican State Leadership Committee, Inc. +gop + +// got : 2014-12-18 Amazon EU S.à r.l. +got + +// grainger : 2015-05-07 Grainger Registry Services, LLC +grainger + +// graphics : 2013-09-13 Over Madison, LLC +graphics + +// gratis : 2014-03-20 Pioneer Tigers, LLC +gratis + +// green : 2014-05-08 Afilias Limited +green + +// gripe : 2014-03-06 Corn Sunset, LLC +gripe + +// grocery : 2016-06-16 Wal-Mart Stores, Inc. +grocery + +// group : 2014-08-15 Romeo Town, LLC +group + +// guardian : 2015-07-30 The Guardian Life Insurance Company of America +guardian + +// gucci : 2014-11-13 Guccio Gucci S.p.a. +gucci + +// guge : 2014-08-28 Charleston Road Registry Inc. +guge + +// guide : 2013-09-13 Snow Moon, LLC +guide + +// guitars : 2013-11-14 Uniregistry, Corp. +guitars + +// guru : 2013-08-27 Pioneer Cypress, LLC +guru + +// hair : 2015-12-03 L'Oréal +hair + +// hamburg : 2014-02-20 Hamburg Top-Level-Domain GmbH +hamburg + +// hangout : 2014-11-13 Charleston Road Registry Inc. +hangout + +// haus : 2013-12-05 +haus + +// hbo : 2015-07-30 HBO Registry Services, Inc. +hbo + +// hdfc : 2015-07-30 HOUSING DEVELOPMENT FINANCE CORPORATION LIMITED +hdfc + +// hdfcbank : 2015-02-12 HDFC Bank Limited +hdfcbank + +// health : 2015-02-11 DotHealth, LLC +health + +// healthcare : 2014-06-12 Silver Glen, LLC +healthcare + +// help : 2014-06-26 Uniregistry, Corp. +help + +// helsinki : 2015-02-05 City of Helsinki +helsinki + +// here : 2014-02-06 Charleston Road Registry Inc. +here + +// hermes : 2014-07-10 HERMES INTERNATIONAL +hermes + +// hgtv : 2015-07-02 Lifestyle Domain Holdings, Inc. +hgtv + +// hiphop : 2014-03-06 Uniregistry, Corp. +hiphop + +// hisamitsu : 2015-07-16 Hisamitsu Pharmaceutical Co.,Inc. +hisamitsu + +// hitachi : 2014-10-31 Hitachi, Ltd. +hitachi + +// hiv : 2014-03-13 +hiv + +// hkt : 2015-05-14 PCCW-HKT DataCom Services Limited +hkt + +// hockey : 2015-03-19 Half Willow, LLC +hockey + +// holdings : 2013-08-27 John Madison, LLC +holdings + +// holiday : 2013-11-07 Goose Woods, LLC +holiday + +// homedepot : 2015-04-02 Homer TLC, Inc. +homedepot + +// homegoods : 2015-07-16 The TJX Companies, Inc. +homegoods + +// homes : 2014-01-09 DERHomes, LLC +homes + +// homesense : 2015-07-16 The TJX Companies, Inc. +homesense + +// honda : 2014-12-18 Honda Motor Co., Ltd. +honda + +// honeywell : 2015-07-23 Honeywell GTLD LLC +honeywell + +// horse : 2013-11-21 Top Level Domain Holdings Limited +horse + +// hospital : 2016-10-20 Ruby Pike, LLC +hospital + +// host : 2014-04-17 DotHost Inc. +host + +// hosting : 2014-05-29 Uniregistry, Corp. +hosting + +// hot : 2015-08-27 Amazon EU S.à r.l. +hot + +// hoteles : 2015-03-05 Travel Reservations SRL +hoteles + +// hotels : 2016-04-07 Booking.com B.V. +hotels + +// hotmail : 2014-12-18 Microsoft Corporation +hotmail + +// house : 2013-11-07 Sugar Park, LLC +house + +// how : 2014-01-23 Charleston Road Registry Inc. +how + +// hsbc : 2014-10-24 HSBC Holdings PLC +hsbc + +// htc : 2015-04-02 HTC corporation +htc + +// hughes : 2015-07-30 Hughes Satellite Systems Corporation +hughes + +// hyatt : 2015-07-30 Hyatt GTLD, L.L.C. +hyatt + +// hyundai : 2015-07-09 Hyundai Motor Company +hyundai + +// ibm : 2014-07-31 International Business Machines Corporation +ibm + +// icbc : 2015-02-19 Industrial and Commercial Bank of China Limited +icbc + +// ice : 2014-10-30 IntercontinentalExchange, Inc. +ice + +// icu : 2015-01-08 One.com A/S +icu + +// ieee : 2015-07-23 IEEE Global LLC +ieee + +// ifm : 2014-01-30 ifm electronic gmbh +ifm + +// ikano : 2015-07-09 Ikano S.A. +ikano + +// imamat : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation) +imamat + +// imdb : 2015-06-25 Amazon EU S.à r.l. +imdb + +// immo : 2014-07-10 Auburn Bloom, LLC +immo + +// immobilien : 2013-11-07 United TLD Holdco Ltd. +immobilien + +// industries : 2013-12-05 Outer House, LLC +industries + +// infiniti : 2014-03-27 NISSAN MOTOR CO., LTD. +infiniti + +// ing : 2014-01-23 Charleston Road Registry Inc. +ing + +// ink : 2013-12-05 Top Level Design, LLC +ink + +// institute : 2013-11-07 Outer Maple, LLC +institute + +// insurance : 2015-02-19 fTLD Registry Services LLC +insurance + +// insure : 2014-03-20 Pioneer Willow, LLC +insure + +// intel : 2015-08-06 Intel Corporation +intel + +// international : 2013-11-07 Wild Way, LLC +international + +// intuit : 2015-07-30 Intuit Administrative Services, Inc. +intuit + +// investments : 2014-03-20 Holly Glen, LLC +investments + +// ipiranga : 2014-08-28 Ipiranga Produtos de Petroleo S.A. +ipiranga + +// irish : 2014-08-07 Dot-Irish LLC +irish + +// iselect : 2015-02-11 iSelect Ltd +iselect + +// ismaili : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation) +ismaili + +// ist : 2014-08-28 Istanbul Metropolitan Municipality +ist + +// istanbul : 2014-08-28 Istanbul Metropolitan Municipality +istanbul + +// itau : 2014-10-02 Itau Unibanco Holding S.A. +itau + +// itv : 2015-07-09 ITV Services Limited +itv + +// iveco : 2015-09-03 CNH Industrial N.V. +iveco + +// iwc : 2014-06-23 Richemont DNS Inc. +iwc + +// jaguar : 2014-11-13 Jaguar Land Rover Ltd +jaguar + +// java : 2014-06-19 Oracle Corporation +java + +// jcb : 2014-11-20 JCB Co., Ltd. +jcb + +// jcp : 2015-04-23 JCP Media, Inc. +jcp + +// jeep : 2015-07-30 FCA US LLC. +jeep + +// jetzt : 2014-01-09 +jetzt + +// jewelry : 2015-03-05 Wild Bloom, LLC +jewelry + +// jio : 2015-04-02 Affinity Names, Inc. +jio + +// jlc : 2014-12-04 Richemont DNS Inc. +jlc + +// jll : 2015-04-02 Jones Lang LaSalle Incorporated +jll + +// jmp : 2015-03-26 Matrix IP LLC +jmp + +// jnj : 2015-06-18 Johnson & Johnson Services, Inc. +jnj + +// joburg : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry +joburg + +// jot : 2014-12-18 Amazon EU S.à r.l. +jot + +// joy : 2014-12-18 Amazon EU S.à r.l. +joy + +// jpmorgan : 2015-04-30 JPMorgan Chase & Co. +jpmorgan + +// jprs : 2014-09-18 Japan Registry Services Co., Ltd. +jprs + +// juegos : 2014-03-20 Uniregistry, Corp. +juegos + +// juniper : 2015-07-30 JUNIPER NETWORKS, INC. +juniper + +// kaufen : 2013-11-07 United TLD Holdco Ltd. +kaufen + +// kddi : 2014-09-12 KDDI CORPORATION +kddi + +// kerryhotels : 2015-04-30 Kerry Trading Co. Limited +kerryhotels + +// kerrylogistics : 2015-04-09 Kerry Trading Co. Limited +kerrylogistics + +// kerryproperties : 2015-04-09 Kerry Trading Co. Limited +kerryproperties + +// kfh : 2014-12-04 Kuwait Finance House +kfh + +// kia : 2015-07-09 KIA MOTORS CORPORATION +kia + +// kim : 2013-09-23 Afilias Limited +kim + +// kinder : 2014-11-07 Ferrero Trading Lux S.A. +kinder + +// kindle : 2015-06-25 Amazon EU S.à r.l. +kindle + +// kitchen : 2013-09-20 Just Goodbye, LLC +kitchen + +// kiwi : 2013-09-20 DOT KIWI LIMITED +kiwi + +// koeln : 2014-01-09 NetCologne Gesellschaft für Telekommunikation mbH +koeln + +// komatsu : 2015-01-08 Komatsu Ltd. +komatsu + +// kosher : 2015-08-20 Kosher Marketing Assets LLC +kosher + +// kpmg : 2015-04-23 KPMG International Cooperative (KPMG International Genossenschaft) +kpmg + +// kpn : 2015-01-08 Koninklijke KPN N.V. +kpn + +// krd : 2013-12-05 KRG Department of Information Technology +krd + +// kred : 2013-12-19 KredTLD Pty Ltd +kred + +// kuokgroup : 2015-04-09 Kerry Trading Co. Limited +kuokgroup + +// kyoto : 2014-11-07 Academic Institution: Kyoto Jyoho Gakuen +kyoto + +// lacaixa : 2014-01-09 CAIXA D'ESTALVIS I PENSIONS DE BARCELONA +lacaixa + +// ladbrokes : 2015-08-06 LADBROKES INTERNATIONAL PLC +ladbrokes + +// lamborghini : 2015-06-04 Automobili Lamborghini S.p.A. +lamborghini + +// lamer : 2015-10-01 The Estée Lauder Companies Inc. +lamer + +// lancaster : 2015-02-12 LANCASTER +lancaster + +// lancia : 2015-07-31 Fiat Chrysler Automobiles N.V. +lancia + +// lancome : 2015-07-23 L'Oréal +lancome + +// land : 2013-09-10 Pine Moon, LLC +land + +// landrover : 2014-11-13 Jaguar Land Rover Ltd +landrover + +// lanxess : 2015-07-30 LANXESS Corporation +lanxess + +// lasalle : 2015-04-02 Jones Lang LaSalle Incorporated +lasalle + +// lat : 2014-10-16 ECOM-LAC Federaciòn de Latinoamèrica y el Caribe para Internet y el Comercio Electrònico +lat + +// latino : 2015-07-30 Dish DBS Corporation +latino + +// latrobe : 2014-06-16 La Trobe University +latrobe + +// law : 2015-01-22 Minds + Machines Group Limited +law + +// lawyer : 2014-03-20 +lawyer + +// lds : 2014-03-20 IRI Domain Management, LLC ("Applicant") +lds + +// lease : 2014-03-06 Victor Trail, LLC +lease + +// leclerc : 2014-08-07 A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc +leclerc + +// lefrak : 2015-07-16 LeFrak Organization, Inc. +lefrak + +// legal : 2014-10-16 Blue Falls, LLC +legal + +// lego : 2015-07-16 LEGO Juris A/S +lego + +// lexus : 2015-04-23 TOYOTA MOTOR CORPORATION +lexus + +// lgbt : 2014-05-08 Afilias Limited +lgbt + +// liaison : 2014-10-02 Liaison Technologies, Incorporated +liaison + +// lidl : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG +lidl + +// life : 2014-02-06 Trixy Oaks, LLC +life + +// lifeinsurance : 2015-01-15 American Council of Life Insurers +lifeinsurance + +// lifestyle : 2014-12-11 Lifestyle Domain Holdings, Inc. +lifestyle + +// lighting : 2013-08-27 John McCook, LLC +lighting + +// like : 2014-12-18 Amazon EU S.à r.l. +like + +// lilly : 2015-07-31 Eli Lilly and Company +lilly + +// limited : 2014-03-06 Big Fest, LLC +limited + +// limo : 2013-10-17 Hidden Frostbite, LLC +limo + +// lincoln : 2014-11-13 Ford Motor Company +lincoln + +// linde : 2014-12-04 Linde Aktiengesellschaft +linde + +// link : 2013-11-14 Uniregistry, Corp. +link + +// lipsy : 2015-06-25 Lipsy Ltd +lipsy + +// live : 2014-12-04 +live + +// living : 2015-07-30 Lifestyle Domain Holdings, Inc. +living + +// lixil : 2015-03-19 LIXIL Group Corporation +lixil + +// loan : 2014-11-20 dot Loan Limited +loan + +// loans : 2014-03-20 June Woods, LLC +loans + +// locker : 2015-06-04 Dish DBS Corporation +locker + +// locus : 2015-06-25 Locus Analytics LLC +locus + +// loft : 2015-07-30 Annco, Inc. +loft + +// lol : 2015-01-30 Uniregistry, Corp. +lol + +// london : 2013-11-14 Dot London Domains Limited +london + +// lotte : 2014-11-07 Lotte Holdings Co., Ltd. +lotte + +// lotto : 2014-04-10 Afilias Limited +lotto + +// love : 2014-12-22 Merchant Law Group LLP +love + +// lpl : 2015-07-30 LPL Holdings, Inc. +lpl + +// lplfinancial : 2015-07-30 LPL Holdings, Inc. +lplfinancial + +// ltd : 2014-09-25 Over Corner, LLC +ltd + +// ltda : 2014-04-17 DOMAIN ROBOT SERVICOS DE HOSPEDAGEM NA INTERNET LTDA +ltda + +// lundbeck : 2015-08-06 H. Lundbeck A/S +lundbeck + +// lupin : 2014-11-07 LUPIN LIMITED +lupin + +// luxe : 2014-01-09 Top Level Domain Holdings Limited +luxe + +// luxury : 2013-10-17 Luxury Partners, LLC +luxury + +// macys : 2015-07-31 Macys, Inc. +macys + +// madrid : 2014-05-01 Comunidad de Madrid +madrid + +// maif : 2014-10-02 Mutuelle Assurance Instituteur France (MAIF) +maif + +// maison : 2013-12-05 Victor Frostbite, LLC +maison + +// makeup : 2015-01-15 L'Oréal +makeup + +// man : 2014-12-04 MAN SE +man + +// management : 2013-11-07 John Goodbye, LLC +management + +// mango : 2013-10-24 PUNTO FA S.L. +mango + +// map : 2016-06-09 Charleston Road Registry Inc. +map + +// market : 2014-03-06 +market + +// marketing : 2013-11-07 Fern Pass, LLC +marketing + +// markets : 2014-12-11 IG Group Holdings PLC +markets + +// marriott : 2014-10-09 Marriott Worldwide Corporation +marriott + +// marshalls : 2015-07-16 The TJX Companies, Inc. +marshalls + +// maserati : 2015-07-31 Fiat Chrysler Automobiles N.V. +maserati + +// mattel : 2015-08-06 Mattel Sites, Inc. +mattel + +// mba : 2015-04-02 Lone Hollow, LLC +mba + +// mcd : 2015-07-30 McDonald’s Corporation +mcd + +// mcdonalds : 2015-07-30 McDonald’s Corporation +mcdonalds + +// mckinsey : 2015-07-31 McKinsey Holdings, Inc. +mckinsey + +// med : 2015-08-06 Medistry LLC +med + +// media : 2014-03-06 Grand Glen, LLC +media + +// meet : 2014-01-16 +meet + +// melbourne : 2014-05-29 The Crown in right of the State of Victoria, represented by its Department of State Development, Business and Innovation +melbourne + +// meme : 2014-01-30 Charleston Road Registry Inc. +meme + +// memorial : 2014-10-16 Dog Beach, LLC +memorial + +// men : 2015-02-26 Exclusive Registry Limited +men + +// menu : 2013-09-11 Wedding TLD2, LLC +menu + +// meo : 2014-11-07 PT Comunicacoes S.A. +meo + +// merckmsd : 2016-07-14 MSD Registry Holdings, Inc. +merckmsd + +// metlife : 2015-05-07 MetLife Services and Solutions, LLC +metlife + +// miami : 2013-12-19 Top Level Domain Holdings Limited +miami + +// microsoft : 2014-12-18 Microsoft Corporation +microsoft + +// mini : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft +mini + +// mint : 2015-07-30 Intuit Administrative Services, Inc. +mint + +// mit : 2015-07-02 Massachusetts Institute of Technology +mit + +// mitsubishi : 2015-07-23 Mitsubishi Corporation +mitsubishi + +// mlb : 2015-05-21 MLB Advanced Media DH, LLC +mlb + +// mls : 2015-04-23 The Canadian Real Estate Association +mls + +// mma : 2014-11-07 MMA IARD +mma + +// mobile : 2016-06-02 Dish DBS Corporation +mobile + +// mobily : 2014-12-18 GreenTech Consultancy Company W.L.L. +mobily + +// moda : 2013-11-07 United TLD Holdco Ltd. +moda + +// moe : 2013-11-13 Interlink Co., Ltd. +moe + +// moi : 2014-12-18 Amazon EU S.à r.l. +moi + +// mom : 2015-04-16 Uniregistry, Corp. +mom + +// monash : 2013-09-30 Monash University +monash + +// money : 2014-10-16 Outer McCook, LLC +money + +// monster : 2015-09-11 Monster Worldwide, Inc. +monster + +// montblanc : 2014-06-23 Richemont DNS Inc. +montblanc + +// mopar : 2015-07-30 FCA US LLC. +mopar + +// mormon : 2013-12-05 IRI Domain Management, LLC ("Applicant") +mormon + +// mortgage : 2014-03-20 +mortgage + +// moscow : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) +moscow + +// moto : 2015-06-04 +moto + +// motorcycles : 2014-01-09 DERMotorcycles, LLC +motorcycles + +// mov : 2014-01-30 Charleston Road Registry Inc. +mov + +// movie : 2015-02-05 New Frostbite, LLC +movie + +// movistar : 2014-10-16 Telefónica S.A. +movistar + +// msd : 2015-07-23 MSD Registry Holdings, Inc. +msd + +// mtn : 2014-12-04 MTN Dubai Limited +mtn + +// mtpc : 2014-11-20 Mitsubishi Tanabe Pharma Corporation +mtpc + +// mtr : 2015-03-12 MTR Corporation Limited +mtr + +// mutual : 2015-04-02 Northwestern Mutual MU TLD Registry, LLC +mutual + +// nab : 2015-08-20 National Australia Bank Limited +nab + +// nadex : 2014-12-11 IG Group Holdings PLC +nadex + +// nagoya : 2013-10-24 GMO Registry, Inc. +nagoya + +// nationwide : 2015-07-23 Nationwide Mutual Insurance Company +nationwide + +// natura : 2015-03-12 NATURA COSMÉTICOS S.A. +natura + +// navy : 2014-03-06 United TLD Holdco Ltd. +navy + +// nba : 2015-07-31 NBA REGISTRY, LLC +nba + +// nec : 2015-01-08 NEC Corporation +nec + +// netbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA +netbank + +// netflix : 2015-06-18 Netflix, Inc. +netflix + +// network : 2013-11-14 Trixy Manor, LLC +network + +// neustar : 2013-12-05 NeuStar, Inc. +neustar + +// new : 2014-01-30 Charleston Road Registry Inc. +new + +// newholland : 2015-09-03 CNH Industrial N.V. +newholland + +// news : 2014-12-18 +news + +// next : 2015-06-18 Next plc +next + +// nextdirect : 2015-06-18 Next plc +nextdirect + +// nexus : 2014-07-24 Charleston Road Registry Inc. +nexus + +// nfl : 2015-07-23 NFL Reg Ops LLC +nfl + +// ngo : 2014-03-06 Public Interest Registry +ngo + +// nhk : 2014-02-13 Japan Broadcasting Corporation (NHK) +nhk + +// nico : 2014-12-04 DWANGO Co., Ltd. +nico + +// nike : 2015-07-23 NIKE, Inc. +nike + +// nikon : 2015-05-21 NIKON CORPORATION +nikon + +// ninja : 2013-11-07 United TLD Holdco Ltd. +ninja + +// nissan : 2014-03-27 NISSAN MOTOR CO., LTD. +nissan + +// nissay : 2015-10-29 Nippon Life Insurance Company +nissay + +// nokia : 2015-01-08 Nokia Corporation +nokia + +// northwesternmutual : 2015-06-18 Northwestern Mutual Registry, LLC +northwesternmutual + +// norton : 2014-12-04 Symantec Corporation +norton + +// now : 2015-06-25 Amazon EU S.à r.l. +now + +// nowruz : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +nowruz + +// nowtv : 2015-05-14 Starbucks (HK) Limited +nowtv + +// nra : 2014-05-22 NRA Holdings Company, INC. +nra + +// nrw : 2013-11-21 Minds + Machines GmbH +nrw + +// ntt : 2014-10-31 NIPPON TELEGRAPH AND TELEPHONE CORPORATION +ntt + +// nyc : 2014-01-23 The City of New York by and through the New York City Department of Information Technology & Telecommunications +nyc + +// obi : 2014-09-25 OBI Group Holding SE & Co. KGaA +obi + +// observer : 2015-04-30 +observer + +// off : 2015-07-23 Johnson Shareholdings, Inc. +off + +// office : 2015-03-12 Microsoft Corporation +office + +// okinawa : 2013-12-05 BusinessRalliart Inc. +okinawa + +// olayan : 2015-05-14 Crescent Holding GmbH +olayan + +// olayangroup : 2015-05-14 Crescent Holding GmbH +olayangroup + +// oldnavy : 2015-07-31 The Gap, Inc. +oldnavy + +// ollo : 2015-06-04 Dish DBS Corporation +ollo + +// omega : 2015-01-08 The Swatch Group Ltd +omega + +// one : 2014-11-07 One.com A/S +one + +// ong : 2014-03-06 Public Interest Registry +ong + +// onl : 2013-09-16 I-Registry Ltd. +onl + +// online : 2015-01-15 DotOnline Inc. +online + +// onyourside : 2015-07-23 Nationwide Mutual Insurance Company +onyourside + +// ooo : 2014-01-09 INFIBEAM INCORPORATION LIMITED +ooo + +// open : 2015-07-31 American Express Travel Related Services Company, Inc. +open + +// oracle : 2014-06-19 Oracle Corporation +oracle + +// orange : 2015-03-12 Orange Brand Services Limited +orange + +// organic : 2014-03-27 Afilias Limited +organic + +// orientexpress : 2015-02-05 +orientexpress + +// origins : 2015-10-01 The Estée Lauder Companies Inc. +origins + +// osaka : 2014-09-04 Interlink Co., Ltd. +osaka + +// otsuka : 2013-10-11 Otsuka Holdings Co., Ltd. +otsuka + +// ott : 2015-06-04 Dish DBS Corporation +ott + +// ovh : 2014-01-16 OVH SAS +ovh + +// page : 2014-12-04 Charleston Road Registry Inc. +page + +// pamperedchef : 2015-02-05 The Pampered Chef, Ltd. +pamperedchef + +// panasonic : 2015-07-30 Panasonic Corporation +panasonic + +// panerai : 2014-11-07 Richemont DNS Inc. +panerai + +// paris : 2014-01-30 City of Paris +paris + +// pars : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +pars + +// partners : 2013-12-05 Magic Glen, LLC +partners + +// parts : 2013-12-05 Sea Goodbye, LLC +parts + +// party : 2014-09-11 Blue Sky Registry Limited +party + +// passagens : 2015-03-05 Travel Reservations SRL +passagens + +// pay : 2015-08-27 Amazon EU S.à r.l. +pay + +// pccw : 2015-05-14 PCCW Enterprises Limited +pccw + +// pet : 2015-05-07 Afilias plc +pet + +// pfizer : 2015-09-11 Pfizer Inc. +pfizer + +// pharmacy : 2014-06-19 National Association of Boards of Pharmacy +pharmacy + +// phd : 2016-07-28 Charleston Road Registry Inc. +phd + +// philips : 2014-11-07 Koninklijke Philips N.V. +philips + +// phone : 2016-06-02 Dish DBS Corporation +phone + +// photo : 2013-11-14 Uniregistry, Corp. +photo + +// photography : 2013-09-20 Sugar Glen, LLC +photography + +// photos : 2013-10-17 Sea Corner, LLC +photos + +// physio : 2014-05-01 PhysBiz Pty Ltd +physio + +// piaget : 2014-10-16 Richemont DNS Inc. +piaget + +// pics : 2013-11-14 Uniregistry, Corp. +pics + +// pictet : 2014-06-26 Pictet Europe S.A. +pictet + +// pictures : 2014-03-06 Foggy Sky, LLC +pictures + +// pid : 2015-01-08 Top Level Spectrum, Inc. +pid + +// pin : 2014-12-18 Amazon EU S.à r.l. +pin + +// ping : 2015-06-11 Ping Registry Provider, Inc. +ping + +// pink : 2013-10-01 Afilias Limited +pink + +// pioneer : 2015-07-16 Pioneer Corporation +pioneer + +// pizza : 2014-06-26 Foggy Moon, LLC +pizza + +// place : 2014-04-24 Snow Galley, LLC +place + +// play : 2015-03-05 Charleston Road Registry Inc. +play + +// playstation : 2015-07-02 Sony Computer Entertainment Inc. +playstation + +// plumbing : 2013-09-10 Spring Tigers, LLC +plumbing + +// plus : 2015-02-05 Sugar Mill, LLC +plus + +// pnc : 2015-07-02 PNC Domain Co., LLC +pnc + +// pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG +pohl + +// poker : 2014-07-03 Afilias Domains No. 5 Limited +poker + +// politie : 2015-08-20 Politie Nederland +politie + +// porn : 2014-10-16 ICM Registry PN LLC +porn + +// pramerica : 2015-07-30 Prudential Financial, Inc. +pramerica + +// praxi : 2013-12-05 Praxi S.p.A. +praxi + +// press : 2014-04-03 DotPress Inc. +press + +// prime : 2015-06-25 Amazon EU S.à r.l. +prime + +// prod : 2014-01-23 Charleston Road Registry Inc. +prod + +// productions : 2013-12-05 Magic Birch, LLC +productions + +// prof : 2014-07-24 Charleston Road Registry Inc. +prof + +// progressive : 2015-07-23 Progressive Casualty Insurance Company +progressive + +// promo : 2014-12-18 +promo + +// properties : 2013-12-05 Big Pass, LLC +properties + +// property : 2014-05-22 Uniregistry, Corp. +property + +// protection : 2015-04-23 +protection + +// pru : 2015-07-30 Prudential Financial, Inc. +pru + +// prudential : 2015-07-30 Prudential Financial, Inc. +prudential + +// pub : 2013-12-12 United TLD Holdco Ltd. +pub + +// pwc : 2015-10-29 PricewaterhouseCoopers LLP +pwc + +// qpon : 2013-11-14 dotCOOL, Inc. +qpon + +// quebec : 2013-12-19 PointQuébec Inc +quebec + +// quest : 2015-03-26 Quest ION Limited +quest + +// qvc : 2015-07-30 QVC, Inc. +qvc + +// racing : 2014-12-04 Premier Registry Limited +racing + +// radio : 2016-07-21 European Broadcasting Union (EBU) +radio + +// raid : 2015-07-23 Johnson Shareholdings, Inc. +raid + +// read : 2014-12-18 Amazon EU S.à r.l. +read + +// realestate : 2015-09-11 dotRealEstate LLC +realestate + +// realtor : 2014-05-29 Real Estate Domains LLC +realtor + +// realty : 2015-03-19 Fegistry, LLC +realty + +// recipes : 2013-10-17 Grand Island, LLC +recipes + +// red : 2013-11-07 Afilias Limited +red + +// redstone : 2014-10-31 Redstone Haute Couture Co., Ltd. +redstone + +// redumbrella : 2015-03-26 Travelers TLD, LLC +redumbrella + +// rehab : 2014-03-06 United TLD Holdco Ltd. +rehab + +// reise : 2014-03-13 +reise + +// reisen : 2014-03-06 New Cypress, LLC +reisen + +// reit : 2014-09-04 National Association of Real Estate Investment Trusts, Inc. +reit + +// reliance : 2015-04-02 Reliance Industries Limited +reliance + +// ren : 2013-12-12 Beijing Qianxiang Wangjing Technology Development Co., Ltd. +ren + +// rent : 2014-12-04 DERRent, LLC +rent + +// rentals : 2013-12-05 Big Hollow,LLC +rentals + +// repair : 2013-11-07 Lone Sunset, LLC +repair + +// report : 2013-12-05 Binky Glen, LLC +report + +// republican : 2014-03-20 United TLD Holdco Ltd. +republican + +// rest : 2013-12-19 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable +rest + +// restaurant : 2014-07-03 Snow Avenue, LLC +restaurant + +// review : 2014-11-20 dot Review Limited +review + +// reviews : 2013-09-13 +reviews + +// rexroth : 2015-06-18 Robert Bosch GMBH +rexroth + +// rich : 2013-11-21 I-Registry Ltd. +rich + +// richardli : 2015-05-14 Pacific Century Asset Management (HK) Limited +richardli + +// ricoh : 2014-11-20 Ricoh Company, Ltd. +ricoh + +// rightathome : 2015-07-23 Johnson Shareholdings, Inc. +rightathome + +// ril : 2015-04-02 Reliance Industries Limited +ril + +// rio : 2014-02-27 Empresa Municipal de Informática SA - IPLANRIO +rio + +// rip : 2014-07-10 United TLD Holdco Ltd. +rip + +// rmit : 2015-11-19 Royal Melbourne Institute of Technology +rmit + +// rocher : 2014-12-18 Ferrero Trading Lux S.A. +rocher + +// rocks : 2013-11-14 +rocks + +// rodeo : 2013-12-19 Top Level Domain Holdings Limited +rodeo + +// rogers : 2015-08-06 Rogers Communications Partnership +rogers + +// room : 2014-12-18 Amazon EU S.à r.l. +room + +// rsvp : 2014-05-08 Charleston Road Registry Inc. +rsvp + +// rugby : 2016-12-15 World Rugby Strategic Developments Limited +rugby + +// ruhr : 2013-10-02 regiodot GmbH & Co. KG +ruhr + +// run : 2015-03-19 Snow Park, LLC +run + +// rwe : 2015-04-02 RWE AG +rwe + +// ryukyu : 2014-01-09 BusinessRalliart Inc. +ryukyu + +// saarland : 2013-12-12 dotSaarland GmbH +saarland + +// safe : 2014-12-18 Amazon EU S.à r.l. +safe + +// safety : 2015-01-08 Safety Registry Services, LLC. +safety + +// sakura : 2014-12-18 SAKURA Internet Inc. +sakura + +// sale : 2014-10-16 +sale + +// salon : 2014-12-11 Outer Orchard, LLC +salon + +// samsclub : 2015-07-31 Wal-Mart Stores, Inc. +samsclub + +// samsung : 2014-04-03 SAMSUNG SDS CO., LTD +samsung + +// sandvik : 2014-11-13 Sandvik AB +sandvik + +// sandvikcoromant : 2014-11-07 Sandvik AB +sandvikcoromant + +// sanofi : 2014-10-09 Sanofi +sanofi + +// sap : 2014-03-27 SAP AG +sap + +// sapo : 2014-11-07 PT Comunicacoes S.A. +sapo + +// sarl : 2014-07-03 Delta Orchard, LLC +sarl + +// sas : 2015-04-02 Research IP LLC +sas + +// save : 2015-06-25 Amazon EU S.à r.l. +save + +// saxo : 2014-10-31 Saxo Bank A/S +saxo + +// sbi : 2015-03-12 STATE BANK OF INDIA +sbi + +// sbs : 2014-11-07 SPECIAL BROADCASTING SERVICE CORPORATION +sbs + +// sca : 2014-03-13 SVENSKA CELLULOSA AKTIEBOLAGET SCA (publ) +sca + +// scb : 2014-02-20 The Siam Commercial Bank Public Company Limited ("SCB") +scb + +// schaeffler : 2015-08-06 Schaeffler Technologies AG & Co. KG +schaeffler + +// schmidt : 2014-04-03 SALM S.A.S. +schmidt + +// scholarships : 2014-04-24 Scholarships.com, LLC +scholarships + +// school : 2014-12-18 Little Galley, LLC +school + +// schule : 2014-03-06 Outer Moon, LLC +schule + +// schwarz : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG +schwarz + +// science : 2014-09-11 dot Science Limited +science + +// scjohnson : 2015-07-23 Johnson Shareholdings, Inc. +scjohnson + +// scor : 2014-10-31 SCOR SE +scor + +// scot : 2014-01-23 Dot Scot Registry Limited +scot + +// search : 2016-06-09 Charleston Road Registry Inc. +search + +// seat : 2014-05-22 SEAT, S.A. (Sociedad Unipersonal) +seat + +// secure : 2015-08-27 Amazon EU S.à r.l. +secure + +// security : 2015-05-14 +security + +// seek : 2014-12-04 Seek Limited +seek + +// select : 2015-10-08 iSelect Ltd +select + +// sener : 2014-10-24 Sener Ingeniería y Sistemas, S.A. +sener + +// services : 2014-02-27 Fox Castle, LLC +services + +// ses : 2015-07-23 SES +ses + +// seven : 2015-08-06 Seven West Media Ltd +seven + +// sew : 2014-07-17 SEW-EURODRIVE GmbH & Co KG +sew + +// sex : 2014-11-13 ICM Registry SX LLC +sex + +// sexy : 2013-09-11 Uniregistry, Corp. +sexy + +// sfr : 2015-08-13 Societe Francaise du Radiotelephone - SFR +sfr + +// shangrila : 2015-09-03 Shangri‐La International Hotel Management Limited +shangrila + +// sharp : 2014-05-01 Sharp Corporation +sharp + +// shaw : 2015-04-23 Shaw Cablesystems G.P. +shaw + +// shell : 2015-07-30 Shell Information Technology International Inc +shell + +// shia : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +shia + +// shiksha : 2013-11-14 Afilias Limited +shiksha + +// shoes : 2013-10-02 Binky Galley, LLC +shoes + +// shop : 2016-04-08 GMO Registry, Inc. +shop + +// shopping : 2016-03-31 +shopping + +// shouji : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. +shouji + +// show : 2015-03-05 Snow Beach, LLC +show + +// showtime : 2015-08-06 CBS Domains Inc. +showtime + +// shriram : 2014-01-23 Shriram Capital Ltd. +shriram + +// silk : 2015-06-25 Amazon EU S.à r.l. +silk + +// sina : 2015-03-12 Sina Corporation +sina + +// singles : 2013-08-27 Fern Madison, LLC +singles + +// site : 2015-01-15 DotSite Inc. +site + +// ski : 2015-04-09 STARTING DOT LIMITED +ski + +// skin : 2015-01-15 L'Oréal +skin + +// sky : 2014-06-19 Sky IP International Ltd, a company incorporated in England and Wales, operating via its registered Swiss branch +sky + +// skype : 2014-12-18 Microsoft Corporation +skype + +// sling : 2015-07-30 Hughes Satellite Systems Corporation +sling + +// smart : 2015-07-09 Smart Communications, Inc. (SMART) +smart + +// smile : 2014-12-18 Amazon EU S.à r.l. +smile + +// sncf : 2015-02-19 Société Nationale des Chemins de fer Francais S N C F +sncf + +// soccer : 2015-03-26 Foggy Shadow, LLC +soccer + +// social : 2013-11-07 United TLD Holdco Ltd. +social + +// softbank : 2015-07-02 SoftBank Corp. +softbank + +// software : 2014-03-20 +software + +// sohu : 2013-12-19 Sohu.com Limited +sohu + +// solar : 2013-11-07 Ruby Town, LLC +solar + +// solutions : 2013-11-07 Silver Cover, LLC +solutions + +// song : 2015-02-26 Amazon EU S.à r.l. +song + +// sony : 2015-01-08 Sony Corporation +sony + +// soy : 2014-01-23 Charleston Road Registry Inc. +soy + +// space : 2014-04-03 DotSpace Inc. +space + +// spiegel : 2014-02-05 SPIEGEL-Verlag Rudolf Augstein GmbH & Co. KG +spiegel + +// spot : 2015-02-26 Amazon EU S.à r.l. +spot + +// spreadbetting : 2014-12-11 IG Group Holdings PLC +spreadbetting + +// srl : 2015-05-07 mySRL GmbH +srl + +// srt : 2015-07-30 FCA US LLC. +srt + +// stada : 2014-11-13 STADA Arzneimittel AG +stada + +// staples : 2015-07-30 Staples, Inc. +staples + +// star : 2015-01-08 Star India Private Limited +star + +// starhub : 2015-02-05 StarHub Ltd +starhub + +// statebank : 2015-03-12 STATE BANK OF INDIA +statebank + +// statefarm : 2015-07-30 State Farm Mutual Automobile Insurance Company +statefarm + +// statoil : 2014-12-04 Statoil ASA +statoil + +// stc : 2014-10-09 Saudi Telecom Company +stc + +// stcgroup : 2014-10-09 Saudi Telecom Company +stcgroup + +// stockholm : 2014-12-18 Stockholms kommun +stockholm + +// storage : 2014-12-22 Self Storage Company LLC +storage + +// store : 2015-04-09 DotStore Inc. +store + +// stream : 2016-01-08 dot Stream Limited +stream + +// studio : 2015-02-11 +studio + +// study : 2014-12-11 OPEN UNIVERSITIES AUSTRALIA PTY LTD +study + +// style : 2014-12-04 Binky Moon, LLC +style + +// sucks : 2014-12-22 Vox Populi Registry Inc. +sucks + +// supplies : 2013-12-19 Atomic Fields, LLC +supplies + +// supply : 2013-12-19 Half Falls, LLC +supply + +// support : 2013-10-24 Grand Orchard, LLC +support + +// surf : 2014-01-09 Top Level Domain Holdings Limited +surf + +// surgery : 2014-03-20 Tin Avenue, LLC +surgery + +// suzuki : 2014-02-20 SUZUKI MOTOR CORPORATION +suzuki + +// swatch : 2015-01-08 The Swatch Group Ltd +swatch + +// swiftcover : 2015-07-23 Swiftcover Insurance Services Limited +swiftcover + +// swiss : 2014-10-16 Swiss Confederation +swiss + +// sydney : 2014-09-18 State of New South Wales, Department of Premier and Cabinet +sydney + +// symantec : 2014-12-04 Symantec Corporation +symantec + +// systems : 2013-11-07 Dash Cypress, LLC +systems + +// tab : 2014-12-04 Tabcorp Holdings Limited +tab + +// taipei : 2014-07-10 Taipei City Government +taipei + +// talk : 2015-04-09 Amazon EU S.à r.l. +talk + +// taobao : 2015-01-15 Alibaba Group Holding Limited +taobao + +// target : 2015-07-31 Target Domain Holdings, LLC +target + +// tatamotors : 2015-03-12 Tata Motors Ltd +tatamotors + +// tatar : 2014-04-24 Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic" +tatar + +// tattoo : 2013-08-30 Uniregistry, Corp. +tattoo + +// tax : 2014-03-20 Storm Orchard, LLC +tax + +// taxi : 2015-03-19 Pine Falls, LLC +taxi + +// tci : 2014-09-12 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +tci + +// tdk : 2015-06-11 TDK Corporation +tdk + +// team : 2015-03-05 Atomic Lake, LLC +team + +// tech : 2015-01-30 Dot Tech LLC +tech + +// technology : 2013-09-13 Auburn Falls +technology + +// telecity : 2015-02-19 TelecityGroup International Limited +telecity + +// telefonica : 2014-10-16 Telefónica S.A. +telefonica + +// temasek : 2014-08-07 Temasek Holdings (Private) Limited +temasek + +// tennis : 2014-12-04 Cotton Bloom, LLC +tennis + +// teva : 2015-07-02 Teva Pharmaceutical Industries Limited +teva + +// thd : 2015-04-02 Homer TLC, Inc. +thd + +// theater : 2015-03-19 Blue Tigers, LLC +theater + +// theatre : 2015-05-07 +theatre + +// tiaa : 2015-07-23 Teachers Insurance and Annuity Association of America +tiaa + +// tickets : 2015-02-05 Accent Media Limited +tickets + +// tienda : 2013-11-14 Victor Manor, LLC +tienda + +// tiffany : 2015-01-30 Tiffany and Company +tiffany + +// tips : 2013-09-20 Corn Willow, LLC +tips + +// tires : 2014-11-07 Dog Edge, LLC +tires + +// tirol : 2014-04-24 punkt Tirol GmbH +tirol + +// tjmaxx : 2015-07-16 The TJX Companies, Inc. +tjmaxx + +// tjx : 2015-07-16 The TJX Companies, Inc. +tjx + +// tkmaxx : 2015-07-16 The TJX Companies, Inc. +tkmaxx + +// tmall : 2015-01-15 Alibaba Group Holding Limited +tmall + +// today : 2013-09-20 Pearl Woods, LLC +today + +// tokyo : 2013-11-13 GMO Registry, Inc. +tokyo + +// tools : 2013-11-21 Pioneer North, LLC +tools + +// top : 2014-03-20 Jiangsu Bangning Science & Technology Co.,Ltd. +top + +// toray : 2014-12-18 Toray Industries, Inc. +toray + +// toshiba : 2014-04-10 TOSHIBA Corporation +toshiba + +// total : 2015-08-06 Total SA +total + +// tours : 2015-01-22 Sugar Station, LLC +tours + +// town : 2014-03-06 Koko Moon, LLC +town + +// toyota : 2015-04-23 TOYOTA MOTOR CORPORATION +toyota + +// toys : 2014-03-06 Pioneer Orchard, LLC +toys + +// trade : 2014-01-23 Elite Registry Limited +trade + +// trading : 2014-12-11 IG Group Holdings PLC +trading + +// training : 2013-11-07 Wild Willow, LLC +training + +// travelchannel : 2015-07-02 Lifestyle Domain Holdings, Inc. +travelchannel + +// travelers : 2015-03-26 Travelers TLD, LLC +travelers + +// travelersinsurance : 2015-03-26 Travelers TLD, LLC +travelersinsurance + +// trust : 2014-10-16 +trust + +// trv : 2015-03-26 Travelers TLD, LLC +trv + +// tube : 2015-06-11 Latin American Telecom LLC +tube + +// tui : 2014-07-03 TUI AG +tui + +// tunes : 2015-02-26 Amazon EU S.à r.l. +tunes + +// tushu : 2014-12-18 Amazon EU S.à r.l. +tushu + +// tvs : 2015-02-19 T V SUNDRAM IYENGAR & SONS LIMITED +tvs + +// ubank : 2015-08-20 National Australia Bank Limited +ubank + +// ubs : 2014-12-11 UBS AG +ubs + +// uconnect : 2015-07-30 FCA US LLC. +uconnect + +// unicom : 2015-10-15 China United Network Communications Corporation Limited +unicom + +// university : 2014-03-06 Little Station, LLC +university + +// uno : 2013-09-11 Dot Latin LLC +uno + +// uol : 2014-05-01 UBN INTERNET LTDA. +uol + +// ups : 2015-06-25 UPS Market Driver, Inc. +ups + +// vacations : 2013-12-05 Atomic Tigers, LLC +vacations + +// vana : 2014-12-11 Lifestyle Domain Holdings, Inc. +vana + +// vanguard : 2015-09-03 The Vanguard Group, Inc. +vanguard + +// vegas : 2014-01-16 Dot Vegas, Inc. +vegas + +// ventures : 2013-08-27 Binky Lake, LLC +ventures + +// verisign : 2015-08-13 VeriSign, Inc. +verisign + +// versicherung : 2014-03-20 +versicherung + +// vet : 2014-03-06 +vet + +// viajes : 2013-10-17 Black Madison, LLC +viajes + +// video : 2014-10-16 +video + +// vig : 2015-05-14 VIENNA INSURANCE GROUP AG Wiener Versicherung Gruppe +vig + +// viking : 2015-04-02 Viking River Cruises (Bermuda) Ltd. +viking + +// villas : 2013-12-05 New Sky, LLC +villas + +// vin : 2015-06-18 Holly Shadow, LLC +vin + +// vip : 2015-01-22 Minds + Machines Group Limited +vip + +// virgin : 2014-09-25 Virgin Enterprises Limited +virgin + +// visa : 2015-07-30 Visa Worldwide Pte. Limited +visa + +// vision : 2013-12-05 Koko Station, LLC +vision + +// vista : 2014-09-18 Vistaprint Limited +vista + +// vistaprint : 2014-09-18 Vistaprint Limited +vistaprint + +// viva : 2014-11-07 Saudi Telecom Company +viva + +// vivo : 2015-07-31 Telefonica Brasil S.A. +vivo + +// vlaanderen : 2014-02-06 DNS.be vzw +vlaanderen + +// vodka : 2013-12-19 Top Level Domain Holdings Limited +vodka + +// volkswagen : 2015-05-14 Volkswagen Group of America Inc. +volkswagen + +// volvo : 2015-11-12 Volvo Holding Sverige Aktiebolag +volvo + +// vote : 2013-11-21 Monolith Registry LLC +vote + +// voting : 2013-11-13 Valuetainment Corp. +voting + +// voto : 2013-11-21 Monolith Registry LLC +voto + +// voyage : 2013-08-27 Ruby House, LLC +voyage + +// vuelos : 2015-03-05 Travel Reservations SRL +vuelos + +// wales : 2014-05-08 Nominet UK +wales + +// walmart : 2015-07-31 Wal-Mart Stores, Inc. +walmart + +// walter : 2014-11-13 Sandvik AB +walter + +// wang : 2013-10-24 Zodiac Leo Limited +wang + +// wanggou : 2014-12-18 Amazon EU S.à r.l. +wanggou + +// warman : 2015-06-18 Weir Group IP Limited +warman + +// watch : 2013-11-14 Sand Shadow, LLC +watch + +// watches : 2014-12-22 Richemont DNS Inc. +watches + +// weather : 2015-01-08 The Weather Channel, LLC +weather + +// weatherchannel : 2015-03-12 The Weather Channel, LLC +weatherchannel + +// webcam : 2014-01-23 dot Webcam Limited +webcam + +// weber : 2015-06-04 Saint-Gobain Weber SA +weber + +// website : 2014-04-03 DotWebsite Inc. +website + +// wed : 2013-10-01 Atgron, Inc. +wed + +// wedding : 2014-04-24 Top Level Domain Holdings Limited +wedding + +// weibo : 2015-03-05 Sina Corporation +weibo + +// weir : 2015-01-29 Weir Group IP Limited +weir + +// whoswho : 2014-02-20 Who's Who Registry +whoswho + +// wien : 2013-10-28 punkt.wien GmbH +wien + +// wiki : 2013-11-07 Top Level Design, LLC +wiki + +// williamhill : 2014-03-13 William Hill Organization Limited +williamhill + +// win : 2014-11-20 First Registry Limited +win + +// windows : 2014-12-18 Microsoft Corporation +windows + +// wine : 2015-06-18 June Station, LLC +wine + +// winners : 2015-07-16 The TJX Companies, Inc. +winners + +// wme : 2014-02-13 William Morris Endeavor Entertainment, LLC +wme + +// wolterskluwer : 2015-08-06 Wolters Kluwer N.V. +wolterskluwer + +// woodside : 2015-07-09 Woodside Petroleum Limited +woodside + +// work : 2013-12-19 Top Level Domain Holdings Limited +work + +// works : 2013-11-14 Little Dynamite, LLC +works + +// world : 2014-06-12 Bitter Fields, LLC +world + +// wow : 2015-10-08 Amazon EU S.à r.l. +wow + +// wtc : 2013-12-19 World Trade Centers Association, Inc. +wtc + +// wtf : 2014-03-06 Hidden Way, LLC +wtf + +// xbox : 2014-12-18 Microsoft Corporation +xbox + +// xerox : 2014-10-24 Xerox DNHC LLC +xerox + +// xfinity : 2015-07-09 Comcast IP Holdings I, LLC +xfinity + +// xihuan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. +xihuan + +// xin : 2014-12-11 Elegant Leader Limited +xin + +// xn--11b4c3d : 2015-01-15 VeriSign Sarl +कॉम + +// xn--1ck2e1b : 2015-02-26 Amazon EU S.à r.l. +セール + +// xn--1qqw23a : 2014-01-09 Guangzhou YU Wei Information Technology Co., Ltd. +佛山 + +// xn--30rr7y : 2014-06-12 Excellent First Limited +慈善 + +// xn--3bst00m : 2013-09-13 Eagle Horizon Limited +集团 + +// xn--3ds443g : 2013-09-08 TLD REGISTRY LIMITED +在线 + +// xn--3oq18vl8pn36a : 2015-07-02 Volkswagen (China) Investment Co., Ltd. +大众汽车 + +// xn--3pxu8k : 2015-01-15 VeriSign Sarl +点看 + +// xn--42c2d9a : 2015-01-15 VeriSign Sarl +คอม + +// xn--45q11c : 2013-11-21 Zodiac Scorpio Limited +八卦 + +// xn--4gbrim : 2013-10-04 Suhub Electronic Establishment +موقع + +// xn--55qw42g : 2013-11-08 China Organizational Name Administration Center +公益 + +// xn--55qx5d : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center) +公司 + +// xn--5su34j936bgsg : 2015-09-03 Shangri‐La International Hotel Management Limited +香格里拉 + +// xn--5tzm5g : 2014-12-22 Global Website TLD Asia Limited +网站 + +// xn--6frz82g : 2013-09-23 Afilias Limited +移动 + +// xn--6qq986b3xl : 2013-09-13 Tycoon Treasure Limited +我爱你 + +// xn--80adxhks : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) +москва + +// xn--80aqecdr1a : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +католик + +// xn--80asehdb : 2013-07-14 CORE Association +онлайн + +// xn--80aswg : 2013-07-14 CORE Association +сайт + +// xn--8y0a063a : 2015-03-26 China United Network Communications Corporation Limited +联通 + +// xn--9dbq2a : 2015-01-15 VeriSign Sarl +קום + +// xn--9et52u : 2014-06-12 RISE VICTORY LIMITED +时尚 + +// xn--9krt00a : 2015-03-12 Sina Corporation +微博 + +// xn--b4w605ferd : 2014-08-07 Temasek Holdings (Private) Limited +淡马锡 + +// xn--bck1b9a5dre4c : 2015-02-26 Amazon EU S.à r.l. +ファッション + +// xn--c1avg : 2013-11-14 Public Interest Registry +орг + +// xn--c2br7g : 2015-01-15 VeriSign Sarl +नेट + +// xn--cck2b3b : 2015-02-26 Amazon EU S.à r.l. +ストア + +// xn--cg4bki : 2013-09-27 SAMSUNG SDS CO., LTD +삼성 + +// xn--czr694b : 2014-01-16 Dot Trademark TLD Holding Company Limited +商标 + +// xn--czrs0t : 2013-12-19 Wild Island, LLC +商店 + +// xn--czru2d : 2013-11-21 Zodiac Capricorn Limited +商城 + +// xn--d1acj3b : 2013-11-20 The Foundation for Network Initiatives “The Smart Internet” +дети + +// xn--eckvdtc9d : 2014-12-18 Amazon EU S.à r.l. +ポイント + +// xn--efvy88h : 2014-08-22 Xinhua News Agency Guangdong Branch 新华通讯社广东分社 +新闻 + +// xn--estv75g : 2015-02-19 Industrial and Commercial Bank of China Limited +工行 + +// xn--fct429k : 2015-04-09 Amazon EU S.à r.l. +家電 + +// xn--fhbei : 2015-01-15 VeriSign Sarl +كوم + +// xn--fiq228c5hs : 2013-09-08 TLD REGISTRY LIMITED +中文网 + +// xn--fiq64b : 2013-10-14 CITIC Group Corporation +中信 + +// xn--fjq720a : 2014-05-22 Will Bloom, LLC +娱乐 + +// xn--flw351e : 2014-07-31 Charleston Road Registry Inc. +谷歌 + +// xn--fzys8d69uvgm : 2015-05-14 PCCW Enterprises Limited +電訊盈科 + +// xn--g2xx48c : 2015-01-30 Minds + Machines Group Limited +购物 + +// xn--gckr3f0f : 2015-02-26 Amazon EU S.à r.l. +クラウド + +// xn--gk3at1e : 2015-10-08 Amazon EU S.à r.l. +通販 + +// xn--hxt814e : 2014-05-15 Zodiac Libra Limited +网店 + +// xn--i1b6b1a6a2e : 2013-11-14 Public Interest Registry +संगठन + +// xn--imr513n : 2014-12-11 Dot Trademark TLD Holding Company Limited +餐厅 + +// xn--io0a7i : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center) +网络 + +// xn--j1aef : 2015-01-15 VeriSign Sarl +ком + +// xn--jlq61u9w7b : 2015-01-08 Nokia Corporation +诺基亚 + +// xn--jvr189m : 2015-02-26 Amazon EU S.à r.l. +食品 + +// xn--kcrx77d1x4a : 2014-11-07 Koninklijke Philips N.V. +飞利浦 + +// xn--kpu716f : 2014-12-22 Richemont DNS Inc. +手表 + +// xn--kput3i : 2014-02-13 Beijing RITT-Net Technology Development Co., Ltd +手机 + +// xn--mgba3a3ejt : 2014-11-20 Aramco Services Company +ارامكو + +// xn--mgba7c0bbn0a : 2015-05-14 Crescent Holding GmbH +العليان + +// xn--mgbaakc7dvf : 2015-09-03 Emirates Telecommunications Corporation (trading as Etisalat) +اتصالات + +// xn--mgbab2bd : 2013-10-31 CORE Association +بازار + +// xn--mgbb9fbpob : 2014-12-18 GreenTech Consultancy Company W.L.L. +موبايلي + +// xn--mgbca7dzdo : 2015-07-30 Abu Dhabi Systems and Information Centre +ابوظبي + +// xn--mgbi4ecexp : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +كاثوليك + +// xn--mgbt3dhd : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +همراه + +// xn--mk1bu44c : 2015-01-15 VeriSign Sarl +닷컴 + +// xn--mxtq1m : 2014-03-06 Net-Chinese Co., Ltd. +政府 + +// xn--ngbc5azd : 2013-07-13 International Domain Registry Pty. Ltd. +شبكة + +// xn--ngbe9e0a : 2014-12-04 Kuwait Finance House +بيتك + +// xn--ngbrx : 2015-11-12 League of Arab States +عرب + +// xn--nqv7f : 2013-11-14 Public Interest Registry +机构 + +// xn--nqv7fs00ema : 2013-11-14 Public Interest Registry +组织机构 + +// xn--nyqy26a : 2014-11-07 Stable Tone Limited +健康 + +// xn--p1acf : 2013-12-12 Rusnames Limited +рус + +// xn--pbt977c : 2014-12-22 Richemont DNS Inc. +珠宝 + +// xn--pssy2u : 2015-01-15 VeriSign Sarl +大拿 + +// xn--q9jyb4c : 2013-09-17 Charleston Road Registry Inc. +みんな + +// xn--qcka1pmc : 2014-07-31 Charleston Road Registry Inc. +グーグル + +// xn--rhqv96g : 2013-09-11 Stable Tone Limited +世界 + +// xn--rovu88b : 2015-02-26 Amazon EU S.à r.l. +書籍 + +// xn--ses554g : 2014-01-16 +网址 + +// xn--t60b56a : 2015-01-15 VeriSign Sarl +닷넷 + +// xn--tckwe : 2015-01-15 VeriSign Sarl +コム + +// xn--tiq49xqyj : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +天主教 + +// xn--unup4y : 2013-07-14 Spring Fields, LLC +游戏 + +// xn--vermgensberater-ctb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG +vermögensberater + +// xn--vermgensberatung-pwb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG +vermögensberatung + +// xn--vhquv : 2013-08-27 Dash McCook, LLC +企业 + +// xn--vuq861b : 2014-10-16 Beijing Tele-info Network Technology Co., Ltd. +信息 + +// xn--w4r85el8fhu5dnra : 2015-04-30 Kerry Trading Co. Limited +嘉里大酒店 + +// xn--w4rs40l : 2015-07-30 Kerry Trading Co. Limited +嘉里 + +// xn--xhq521b : 2013-11-14 Guangzhou YU Wei Information Technology Co., Ltd. +广东 + +// xn--zfr164b : 2013-11-08 China Organizational Name Administration Center +政务 + +// xperia : 2015-05-14 Sony Mobile Communications AB +xperia + +// xyz : 2013-12-05 XYZ.COM LLC +xyz + +// yachts : 2014-01-09 DERYachts, LLC +yachts + +// yahoo : 2015-04-02 Yahoo! Domain Services Inc. +yahoo + +// yamaxun : 2014-12-18 Amazon EU S.à r.l. +yamaxun + +// yandex : 2014-04-10 YANDEX, LLC +yandex + +// yodobashi : 2014-11-20 YODOBASHI CAMERA CO.,LTD. +yodobashi + +// yoga : 2014-05-29 Top Level Domain Holdings Limited +yoga + +// yokohama : 2013-12-12 GMO Registry, Inc. +yokohama + +// you : 2015-04-09 Amazon EU S.à r.l. +you + +// youtube : 2014-05-01 Charleston Road Registry Inc. +youtube + +// yun : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. +yun + +// zappos : 2015-06-25 Amazon EU S.à r.l. +zappos + +// zara : 2014-11-07 Industria de Diseño Textil, S.A. (INDITEX, S.A.) +zara + +// zero : 2014-12-18 Amazon EU S.à r.l. +zero + +// zip : 2014-05-08 Charleston Road Registry Inc. +zip + +// zippo : 2015-07-02 Zadco Company +zippo + +// zone : 2013-11-14 Outer Falls, LLC +zone + +// zuerich : 2014-11-07 Kanton Zürich (Canton of Zurich) +zuerich + + +// ===END ICANN DOMAINS=== +// ===BEGIN PRIVATE DOMAINS=== +// (Note: these are in alphabetical order by company name) + +// Agnat sp. z o.o. : https://domena.pl +// Submitted by Przemyslaw Plewa +beep.pl + +// Alces Software Ltd : http://alces-software.com +// Submitted by Mark J. Titorenko +*.compute.estate +*.alces.network + +// alwaysdata : https://www.alwaysdata.com +// Submitted by Cyril +*.alwaysdata.net + +// Amazon CloudFront : https://aws.amazon.com/cloudfront/ +// Submitted by Donavan Miller +cloudfront.net + +// Amazon Elastic Compute Cloud: https://aws.amazon.com/ec2/ +// Submitted by Luke Wells +*.compute.amazonaws.com +*.compute-1.amazonaws.com +*.compute.amazonaws.com.cn +us-east-1.amazonaws.com + +// Amazon Elastic Beanstalk : https://aws.amazon.com/elasticbeanstalk/ +// Submitted by Luke Wells +elasticbeanstalk.cn-north-1.amazonaws.com.cn +*.elasticbeanstalk.com + +// Amazon Elastic Load Balancing : https://aws.amazon.com/elasticloadbalancing/ +// Submitted by Luke Wells +*.elb.amazonaws.com +*.elb.amazonaws.com.cn + +// Amazon S3 : https://aws.amazon.com/s3/ +// Submitted by Luke Wells +s3.amazonaws.com +s3-ap-northeast-1.amazonaws.com +s3-ap-northeast-2.amazonaws.com +s3-ap-south-1.amazonaws.com +s3-ap-southeast-1.amazonaws.com +s3-ap-southeast-2.amazonaws.com +s3-ca-central-1.amazonaws.com +s3-eu-central-1.amazonaws.com +s3-eu-west-1.amazonaws.com +s3-eu-west-2.amazonaws.com +s3-external-1.amazonaws.com +s3-fips-us-gov-west-1.amazonaws.com +s3-sa-east-1.amazonaws.com +s3-us-gov-west-1.amazonaws.com +s3-us-east-2.amazonaws.com +s3-us-west-1.amazonaws.com +s3-us-west-2.amazonaws.com +s3.ap-northeast-2.amazonaws.com +s3.ap-south-1.amazonaws.com +s3.cn-north-1.amazonaws.com.cn +s3.ca-central-1.amazonaws.com +s3.eu-central-1.amazonaws.com +s3.eu-west-2.amazonaws.com +s3.us-east-2.amazonaws.com +s3.dualstack.ap-northeast-1.amazonaws.com +s3.dualstack.ap-northeast-2.amazonaws.com +s3.dualstack.ap-south-1.amazonaws.com +s3.dualstack.ap-southeast-1.amazonaws.com +s3.dualstack.ap-southeast-2.amazonaws.com +s3.dualstack.ca-central-1.amazonaws.com +s3.dualstack.eu-central-1.amazonaws.com +s3.dualstack.eu-west-1.amazonaws.com +s3.dualstack.eu-west-2.amazonaws.com +s3.dualstack.sa-east-1.amazonaws.com +s3.dualstack.us-east-1.amazonaws.com +s3.dualstack.us-east-2.amazonaws.com +s3-website-us-east-1.amazonaws.com +s3-website-us-west-1.amazonaws.com +s3-website-us-west-2.amazonaws.com +s3-website-ap-northeast-1.amazonaws.com +s3-website-ap-southeast-1.amazonaws.com +s3-website-ap-southeast-2.amazonaws.com +s3-website-eu-west-1.amazonaws.com +s3-website-sa-east-1.amazonaws.com +s3-website.ap-northeast-2.amazonaws.com +s3-website.ap-south-1.amazonaws.com +s3-website.ca-central-1.amazonaws.com +s3-website.eu-central-1.amazonaws.com +s3-website.eu-west-2.amazonaws.com +s3-website.us-east-2.amazonaws.com + +// Amune : https://amune.org/ +// Submitted by Team Amune +t3l3p0rt.net +tele.amune.org + +// Aptible : https://www.aptible.com/ +// Submitted by Thomas Orozco +on-aptible.com + +// Asociación Amigos de la Informática "Euskalamiga" : http://encounter.eus/ +// Submitted by Hector Martin +user.party.eus + +// Association potager.org : https://potager.org/ +// Submitted by Lunar +pimienta.org +poivron.org +potager.org +sweetpepper.org + +// ASUSTOR Inc. : http://www.asustor.com +// Submitted by Vincent Tseng +myasustor.com + +// AVM : https://avm.de +// Submitted by Andreas Weise +myfritz.net + +// backplane : https://www.backplane.io +// Submitted by Anthony Voutas +backplaneapp.io + +// BetaInABox +// Submitted by Adrian +betainabox.com + +// BinaryLane : http://www.binarylane.com +// Submitted by Nathan O'Sullivan +bnr.la + +// Boxfuse : https://boxfuse.com +// Submitted by Axel Fontaine +boxfuse.io + +// BrowserSafetyMark +// Submitted by Dave Tharp +browsersafetymark.io + +// callidomus: https://www.callidomus.com/ +// Submitted by Marcus Popp +mycd.eu + +// CentralNic : http://www.centralnic.com/names/domains +// Submitted by registry +ae.org +ar.com +br.com +cn.com +com.de +com.se +de.com +eu.com +gb.com +gb.net +hu.com +hu.net +jp.net +jpn.com +kr.com +mex.com +no.com +qc.com +ru.com +sa.com +se.com +se.net +uk.com +uk.net +us.com +uy.com +za.bz +za.com + +// Africa.com Web Solutions Ltd : https://registry.africa.com +// Submitted by Gavin Brown +africa.com + +// iDOT Services Limited : http://www.domain.gr.com +// Submitted by Gavin Brown +gr.com + +// Radix FZC : http://domains.in.net +// Submitted by Gavin Brown +in.net + +// US REGISTRY LLC : http://us.org +// Submitted by Gavin Brown +us.org + +// co.com Registry, LLC : https://registry.co.com +// Submitted by Gavin Brown +co.com + +// c.la : http://www.c.la/ +c.la + +// certmgr.org : https://certmgr.org +// Submitted by B. Blechschmidt +certmgr.org + +// Citrix : https://citrix.com +// Submitted by Alex Stoddard +xenapponazure.com + +// ClearVox : http://www.clearvox.nl/ +// Submitted by Leon Rowland +virtueeldomein.nl + +// cloudControl : https://www.cloudcontrol.com/ +// Submitted by Tobias Wilken +cloudcontrolled.com +cloudcontrolapp.com + +// co.ca : http://registry.co.ca/ +co.ca + +// i-registry s.r.o. : http://www.i-registry.cz/ +// Submitted by Martin Semrad +co.cz + +// CDN77.com : http://www.cdn77.com +// Submitted by Jan Krpes +c.cdn77.org +cdn77-ssl.net +r.cdn77.net +rsc.cdn77.org +ssl.origin.cdn77-secure.org + +// Cloud DNS Ltd : http://www.cloudns.net +// Submitted by Aleksander Hristov +cloudns.asia +cloudns.biz +cloudns.club +cloudns.cc +cloudns.eu +cloudns.in +cloudns.info +cloudns.org +cloudns.pro +cloudns.pw +cloudns.us + +// CoDNS B.V. +co.nl +co.no + +// Commerce Guys, SAS +// Submitted by Damien Tournoud +*.platform.sh + +// COSIMO GmbH http://www.cosimo.de +// Submitted by Rene Marticke +dyn.cosidns.de +dynamisches-dns.de +dnsupdater.de +internet-dns.de +l-o-g-i-n.de +dynamic-dns.info +feste-ip.net +knx-server.net +static-access.net + +// Craynic, s.r.o. : http://www.craynic.com/ +// Submitted by Ales Krajnik +realm.cz + +// Cryptonomic : https://cryptonomic.net/ +// Submitted by Andrew Cady +*.cryptonomic.net + +// Cupcake : https://cupcake.io/ +// Submitted by Jonathan Rudenberg +cupcake.is + +// cyon GmbH : https://www.cyon.ch/ +// Submitted by Dominic Luechinger +cyon.link +cyon.site + +// Daplie, Inc : https://daplie.com +// Submitted by AJ ONeal +daplie.me + +// Dansk.net : http://www.dansk.net/ +// Submitted by Anani Voule +biz.dk +co.dk +firm.dk +reg.dk +store.dk + +// deSEC : https://desec.io/ +// Submitted by Peter Thomassen +dedyn.io + +// DNShome : https://www.dnshome.de/ +// Submitted by Norbert Auler +dnshome.de + +// DreamHost : http://www.dreamhost.com/ +// Submitted by Andrew Farmer +dreamhosters.com + +// Drobo : http://www.drobo.com/ +// Submitted by Ricardo Padilha +mydrobo.com + +// Drud Holdings, LLC. : https://www.drud.com/ +// Submitted by Kevin Bridges +drud.io +drud.us + +// DuckDNS : http://www.duckdns.org/ +// Submitted by Richard Harper +duckdns.org + +// dy.fi : http://dy.fi/ +// Submitted by Heikki Hannikainen +dy.fi +tunk.org + +// DynDNS.com : http://www.dyndns.com/services/dns/dyndns/ +dyndns-at-home.com +dyndns-at-work.com +dyndns-blog.com +dyndns-free.com +dyndns-home.com +dyndns-ip.com +dyndns-mail.com +dyndns-office.com +dyndns-pics.com +dyndns-remote.com +dyndns-server.com +dyndns-web.com +dyndns-wiki.com +dyndns-work.com +dyndns.biz +dyndns.info +dyndns.org +dyndns.tv +at-band-camp.net +ath.cx +barrel-of-knowledge.info +barrell-of-knowledge.info +better-than.tv +blogdns.com +blogdns.net +blogdns.org +blogsite.org +boldlygoingnowhere.org +broke-it.net +buyshouses.net +cechire.com +dnsalias.com +dnsalias.net +dnsalias.org +dnsdojo.com +dnsdojo.net +dnsdojo.org +does-it.net +doesntexist.com +doesntexist.org +dontexist.com +dontexist.net +dontexist.org +doomdns.com +doomdns.org +dvrdns.org +dyn-o-saur.com +dynalias.com +dynalias.net +dynalias.org +dynathome.net +dyndns.ws +endofinternet.net +endofinternet.org +endoftheinternet.org +est-a-la-maison.com +est-a-la-masion.com +est-le-patron.com +est-mon-blogueur.com +for-better.biz +for-more.biz +for-our.info +for-some.biz +for-the.biz +forgot.her.name +forgot.his.name +from-ak.com +from-al.com +from-ar.com +from-az.net +from-ca.com +from-co.net +from-ct.com +from-dc.com +from-de.com +from-fl.com +from-ga.com +from-hi.com +from-ia.com +from-id.com +from-il.com +from-in.com +from-ks.com +from-ky.com +from-la.net +from-ma.com +from-md.com +from-me.org +from-mi.com +from-mn.com +from-mo.com +from-ms.com +from-mt.com +from-nc.com +from-nd.com +from-ne.com +from-nh.com +from-nj.com +from-nm.com +from-nv.com +from-ny.net +from-oh.com +from-ok.com +from-or.com +from-pa.com +from-pr.com +from-ri.com +from-sc.com +from-sd.com +from-tn.com +from-tx.com +from-ut.com +from-va.com +from-vt.com +from-wa.com +from-wi.com +from-wv.com +from-wy.com +ftpaccess.cc +fuettertdasnetz.de +game-host.org +game-server.cc +getmyip.com +gets-it.net +go.dyndns.org +gotdns.com +gotdns.org +groks-the.info +groks-this.info +ham-radio-op.net +here-for-more.info +hobby-site.com +hobby-site.org +home.dyndns.org +homedns.org +homeftp.net +homeftp.org +homeip.net +homelinux.com +homelinux.net +homelinux.org +homeunix.com +homeunix.net +homeunix.org +iamallama.com +in-the-band.net +is-a-anarchist.com +is-a-blogger.com +is-a-bookkeeper.com +is-a-bruinsfan.org +is-a-bulls-fan.com +is-a-candidate.org +is-a-caterer.com +is-a-celticsfan.org +is-a-chef.com +is-a-chef.net +is-a-chef.org +is-a-conservative.com +is-a-cpa.com +is-a-cubicle-slave.com +is-a-democrat.com +is-a-designer.com +is-a-doctor.com +is-a-financialadvisor.com +is-a-geek.com +is-a-geek.net +is-a-geek.org +is-a-green.com +is-a-guru.com +is-a-hard-worker.com +is-a-hunter.com +is-a-knight.org +is-a-landscaper.com +is-a-lawyer.com +is-a-liberal.com +is-a-libertarian.com +is-a-linux-user.org +is-a-llama.com +is-a-musician.com +is-a-nascarfan.com +is-a-nurse.com +is-a-painter.com +is-a-patsfan.org +is-a-personaltrainer.com +is-a-photographer.com +is-a-player.com +is-a-republican.com +is-a-rockstar.com +is-a-socialist.com +is-a-soxfan.org +is-a-student.com +is-a-teacher.com +is-a-techie.com +is-a-therapist.com +is-an-accountant.com +is-an-actor.com +is-an-actress.com +is-an-anarchist.com +is-an-artist.com +is-an-engineer.com +is-an-entertainer.com +is-by.us +is-certified.com +is-found.org +is-gone.com +is-into-anime.com +is-into-cars.com +is-into-cartoons.com +is-into-games.com +is-leet.com +is-lost.org +is-not-certified.com +is-saved.org +is-slick.com +is-uberleet.com +is-very-bad.org +is-very-evil.org +is-very-good.org +is-very-nice.org +is-very-sweet.org +is-with-theband.com +isa-geek.com +isa-geek.net +isa-geek.org +isa-hockeynut.com +issmarterthanyou.com +isteingeek.de +istmein.de +kicks-ass.net +kicks-ass.org +knowsitall.info +land-4-sale.us +lebtimnetz.de +leitungsen.de +likes-pie.com +likescandy.com +merseine.nu +mine.nu +misconfused.org +mypets.ws +myphotos.cc +neat-url.com +office-on-the.net +on-the-web.tv +podzone.net +podzone.org +readmyblog.org +saves-the-whales.com +scrapper-site.net +scrapping.cc +selfip.biz +selfip.com +selfip.info +selfip.net +selfip.org +sells-for-less.com +sells-for-u.com +sells-it.net +sellsyourhome.org +servebbs.com +servebbs.net +servebbs.org +serveftp.net +serveftp.org +servegame.org +shacknet.nu +simple-url.com +space-to-rent.com +stuff-4-sale.org +stuff-4-sale.us +teaches-yoga.com +thruhere.net +traeumtgerade.de +webhop.biz +webhop.info +webhop.net +webhop.org +worse-than.tv +writesthisblog.com + +// ddnss.de : https://www.ddnss.de/ +// Submitted by Robert Niedziela +ddnss.de +dyn.ddnss.de +dyndns.ddnss.de +dyndns1.de +dyn-ip24.de +home-webserver.de +dyn.home-webserver.de +myhome-server.de +ddnss.org + +// dynv6 : https://dynv6.com +// Submitted by Dominik Menke 2016-01-18 +dynv6.net + +// E4YOU spol. s.r.o. : https://e4you.cz/ +// Submitted by Vladimir Dudr +e4.cz + +// Enonic : http://enonic.com/ +// Submitted by Erik Kaareng-Sunde +enonic.io +customer.enonic.io + +// EU.org https://eu.org/ +// Submitted by Pierre Beyssac +eu.org +al.eu.org +asso.eu.org +at.eu.org +au.eu.org +be.eu.org +bg.eu.org +ca.eu.org +cd.eu.org +ch.eu.org +cn.eu.org +cy.eu.org +cz.eu.org +de.eu.org +dk.eu.org +edu.eu.org +ee.eu.org +es.eu.org +fi.eu.org +fr.eu.org +gr.eu.org +hr.eu.org +hu.eu.org +ie.eu.org +il.eu.org +in.eu.org +int.eu.org +is.eu.org +it.eu.org +jp.eu.org +kr.eu.org +lt.eu.org +lu.eu.org +lv.eu.org +mc.eu.org +me.eu.org +mk.eu.org +mt.eu.org +my.eu.org +net.eu.org +ng.eu.org +nl.eu.org +no.eu.org +nz.eu.org +paris.eu.org +pl.eu.org +pt.eu.org +q-a.eu.org +ro.eu.org +ru.eu.org +se.eu.org +si.eu.org +sk.eu.org +tr.eu.org +uk.eu.org +us.eu.org + +// Evennode : http://www.evennode.com/ +// Submitted by Michal Kralik +eu-1.evennode.com +eu-2.evennode.com +eu-3.evennode.com +us-1.evennode.com +us-2.evennode.com +us-3.evennode.com + +// Facebook, Inc. +// Submitted by Peter Ruibal +apps.fbsbx.com + +// FAITID : https://faitid.org/ +// Submitted by Maxim Alzoba +// https://www.flexireg.net/stat_info +ru.net +adygeya.ru +bashkiria.ru +bir.ru +cbg.ru +com.ru +dagestan.ru +grozny.ru +kalmykia.ru +kustanai.ru +marine.ru +mordovia.ru +msk.ru +mytis.ru +nalchik.ru +nov.ru +pyatigorsk.ru +spb.ru +vladikavkaz.ru +vladimir.ru +abkhazia.su +adygeya.su +aktyubinsk.su +arkhangelsk.su +armenia.su +ashgabad.su +azerbaijan.su +balashov.su +bashkiria.su +bryansk.su +bukhara.su +chimkent.su +dagestan.su +east-kazakhstan.su +exnet.su +georgia.su +grozny.su +ivanovo.su +jambyl.su +kalmykia.su +kaluga.su +karacol.su +karaganda.su +karelia.su +khakassia.su +krasnodar.su +kurgan.su +kustanai.su +lenug.su +mangyshlak.su +mordovia.su +msk.su +murmansk.su +nalchik.su +navoi.su +north-kazakhstan.su +nov.su +obninsk.su +penza.su +pokrovsk.su +sochi.su +spb.su +tashkent.su +termez.su +togliatti.su +troitsk.su +tselinograd.su +tula.su +tuva.su +vladikavkaz.su +vladimir.su +vologda.su + +// Fastly Inc. : http://www.fastly.com/ +// Submitted by Fastly Security +fastlylb.net +map.fastlylb.net +freetls.fastly.net +map.fastly.net +a.prod.fastly.net +global.prod.fastly.net +a.ssl.fastly.net +b.ssl.fastly.net +global.ssl.fastly.net + +// Featherhead : https://featherhead.xyz/ +// Submitted by Simon Menke +fhapp.xyz + +// Firebase, Inc. +// Submitted by Chris Raynor +firebaseapp.com + +// Flynn : https://flynn.io +// Submitted by Jonathan Rudenberg +flynnhub.com + +// Freebox : http://www.freebox.fr +// Submitted by Romain Fliedel +freebox-os.com +freeboxos.com +fbx-os.fr +fbxos.fr +freebox-os.fr +freeboxos.fr + +// Fusion Intranet : https://www.fusion-intranet.com +// Submitted by Matthias Burtscher +myfusion.cloud + +// Futureweb OG : http://www.futureweb.at +// Submitted by Andreas Schnederle-Wagner +futurehosting.at +futuremailing.at +*.ex.ortsinfo.at +*.kunden.ortsinfo.at +*.statics.cloud + +// GDS : https://www.gov.uk/service-manual/operations/operating-servicegovuk-subdomains +// Submitted by David Illsley +service.gov.uk + +// GitHub, Inc. +// Submitted by Patrick Toomey +github.io +githubusercontent.com +githubcloud.com +*.api.githubcloud.com +*.ext.githubcloud.com +gist.githubcloud.com +*.githubcloudusercontent.com + +// GitLab, Inc. +// Submitted by Alex Hanselka +gitlab.io + +// UKHomeOffice : https://www.gov.uk/government/organisations/home-office +// Submitted by Jon Shanks +homeoffice.gov.uk + +// GlobeHosting, Inc. +// Submitted by Zoltan Egresi +ro.im +shop.ro + +// GoIP DNS Services : http://www.goip.de +// Submitted by Christian Poulter +goip.de + +// Google, Inc. +// Submitted by Eduardo Vela +*.0emm.com +appspot.com +blogspot.ae +blogspot.al +blogspot.am +blogspot.ba +blogspot.be +blogspot.bg +blogspot.bj +blogspot.ca +blogspot.cf +blogspot.ch +blogspot.cl +blogspot.co.at +blogspot.co.id +blogspot.co.il +blogspot.co.ke +blogspot.co.nz +blogspot.co.uk +blogspot.co.za +blogspot.com +blogspot.com.ar +blogspot.com.au +blogspot.com.br +blogspot.com.by +blogspot.com.co +blogspot.com.cy +blogspot.com.ee +blogspot.com.eg +blogspot.com.es +blogspot.com.mt +blogspot.com.ng +blogspot.com.tr +blogspot.com.uy +blogspot.cv +blogspot.cz +blogspot.de +blogspot.dk +blogspot.fi +blogspot.fr +blogspot.gr +blogspot.hk +blogspot.hr +blogspot.hu +blogspot.ie +blogspot.in +blogspot.is +blogspot.it +blogspot.jp +blogspot.kr +blogspot.li +blogspot.lt +blogspot.lu +blogspot.md +blogspot.mk +blogspot.mr +blogspot.mx +blogspot.my +blogspot.nl +blogspot.no +blogspot.pe +blogspot.pt +blogspot.qa +blogspot.re +blogspot.ro +blogspot.rs +blogspot.ru +blogspot.se +blogspot.sg +blogspot.si +blogspot.sk +blogspot.sn +blogspot.td +blogspot.tw +blogspot.ug +blogspot.vn +cloudfunctions.net +codespot.com +googleapis.com +googlecode.com +pagespeedmobilizer.com +publishproxy.com +withgoogle.com +withyoutube.com + +// Hashbang : https://hashbang.sh +hashbang.sh + +// Hasura : https://hasura.io +// Submitted by Shahidh K Muhammed +hasura-app.io + +// Hepforge : https://www.hepforge.org +// Submitted by David Grellscheid +hepforge.org + +// Heroku : https://www.heroku.com/ +// Submitted by Tom Maher +herokuapp.com +herokussl.com + +// iki.fi +// Submitted by Hannu Aronsson +iki.fi + +// info.at : http://www.info.at/ +biz.at +info.at + +// Interlegis : http://www.interlegis.leg.br +// Submitted by Gabriel Ferreira +ac.leg.br +al.leg.br +am.leg.br +ap.leg.br +ba.leg.br +ce.leg.br +df.leg.br +es.leg.br +go.leg.br +ma.leg.br +mg.leg.br +ms.leg.br +mt.leg.br +pa.leg.br +pb.leg.br +pe.leg.br +pi.leg.br +pr.leg.br +rj.leg.br +rn.leg.br +ro.leg.br +rr.leg.br +rs.leg.br +sc.leg.br +se.leg.br +sp.leg.br +to.leg.br + +// Joyent : https://www.joyent.com/ +// Submitted by Brian Bennett +*.triton.zone +*.cns.joyent.com + +// JS.ORG : http://dns.js.org +// Submitted by Stefan Keim +js.org + +// Keyweb AG : https://www.keyweb.de +// Submitted by Martin Dannehl +keymachine.de + +// KnightPoint Systems, LLC : http://www.knightpoint.com/ +// Submitted by Roy Keene +knightpoint.systems + +// .KRD : http://nic.krd/data/krd/Registration%20Policy.pdf +co.krd +edu.krd + +// Magento Commerce +// Submitted by Damien Tournoud +*.magentosite.cloud + +// Meteor Development Group : https://www.meteor.com/hosting +// Submitted by Pierre Carrier +meteorapp.com +eu.meteorapp.com + +// Michau Enterprises Limited : http://www.co.pl/ +co.pl + +// Microsoft : http://microsoft.com +// Submitted by Barry Dorrans +azurewebsites.net +azure-mobile.net +cloudapp.net + +// Mozilla Foundation : https://mozilla.org/ +// Submitted by glob +bmoattachments.org + +// Neustar Inc. +// Submitted by Trung Tran +4u.com + +// ngrok : https://ngrok.com/ +// Submitted by Alan Shreve +ngrok.io + +// NFSN, Inc. : https://www.NearlyFreeSpeech.NET/ +// Submitted by Jeff Wheelhouse +nfshost.com + +// nsupdate.info : https://www.nsupdate.info/ +// Submitted by Thomas Waldmann +nsupdate.info +nerdpol.ovh + +// No-IP.com : https://noip.com/ +// Submitted by Deven Reza +blogsyte.com +brasilia.me +cable-modem.org +ciscofreak.com +collegefan.org +couchpotatofries.org +damnserver.com +ddns.me +ditchyourip.com +dnsfor.me +dnsiskinky.com +dvrcam.info +dynns.com +eating-organic.net +fantasyleague.cc +geekgalaxy.com +golffan.us +health-carereform.com +homesecuritymac.com +homesecuritypc.com +hopto.me +ilovecollege.info +loginto.me +mlbfan.org +mmafan.biz +myactivedirectory.com +mydissent.net +myeffect.net +mymediapc.net +mypsx.net +mysecuritycamera.com +mysecuritycamera.net +mysecuritycamera.org +net-freaks.com +nflfan.org +nhlfan.net +no-ip.ca +no-ip.co.uk +no-ip.net +noip.us +onthewifi.com +pgafan.net +point2this.com +pointto.us +privatizehealthinsurance.net +quicksytes.com +read-books.org +securitytactics.com +serveexchange.com +servehumour.com +servep2p.com +servesarcasm.com +stufftoread.com +ufcfan.org +unusualperson.com +workisboring.com +3utilities.com +bounceme.net +ddns.net +ddnsking.com +gotdns.ch +hopto.org +myftp.biz +myftp.org +myvnc.com +no-ip.biz +no-ip.info +no-ip.org +noip.me +redirectme.net +servebeer.com +serveblog.net +servecounterstrike.com +serveftp.com +servegame.com +servehalflife.com +servehttp.com +serveirc.com +serveminecraft.net +servemp3.com +servepics.com +servequake.com +sytes.net +webhop.me +zapto.org + +// NYC.mn : http://www.information.nyc.mn +// Submitted by Matthew Brown +nyc.mn + +// One Fold Media : http://www.onefoldmedia.com/ +// Submitted by Eddie Jones +nid.io + +// OpenCraft GmbH : http://opencraft.com/ +// Submitted by Sven Marnach +opencraft.hosting + +// Opera Software, A.S.A. +// Submitted by Yngve Pettersen +operaunite.com + +// OutSystems +// Submitted by Duarte Santos +outsystemscloud.com + +// OwnProvider : http://www.ownprovider.com +// Submitted by Jan Moennich +ownprovider.com + +// oy.lc +// Submitted by Charly Coste +oy.lc + +// Pagefog : https://pagefog.com/ +// Submitted by Derek Myers +pgfog.com + +// Pagefront : https://www.pagefronthq.com/ +// Submitted by Jason Kriss +pagefrontapp.com + +// .pl domains (grandfathered) +art.pl +gliwice.pl +krakow.pl +poznan.pl +wroc.pl +zakopane.pl + +// Pantheon Systems, Inc. : https://pantheon.io/ +// Submitted by Gary Dylina +pantheonsite.io +gotpantheon.com + +// Peplink | Pepwave : http://peplink.com/ +// Submitted by Steve Leung +mypep.link + +// Planet-Work : https://www.planet-work.com/ +// Submitted by Frédéric VANNIÈRE +on-web.fr + +// prgmr.com : https://prgmr.com/ +// Submitted by Sarah Newman +xen.prgmr.com + +// priv.at : http://www.nic.priv.at/ +// Submitted by registry +priv.at + +// Protonet GmbH : http://protonet.io +// Submitted by Martin Meier +protonet.io + +// Publication Presse Communication SARL : https://ppcom.fr +// Submitted by Yaacov Akiba Slama +chirurgiens-dentistes-en-france.fr + +// QA2 +// Submitted by Daniel Dent (https://www.danieldent.com/) +qa2.com + +// QNAP System Inc : https://www.qnap.com +// Submitted by Nick Chang +dev-myqnapcloud.com +alpha-myqnapcloud.com +myqnapcloud.com + +// Rackmaze LLC : https://www.rackmaze.com +// Submitted by Kirill Pertsev +rackmaze.com +rackmaze.net + +// Red Hat, Inc. OpenShift : https://openshift.redhat.com/ +// Submitted by Tim Kramer +rhcloud.com + +// RethinkDB : https://www.rethinkdb.com/ +// Submitted by Chris Kastorff +hzc.io + +// Revitalised Limited : http://www.revitalised.co.uk +// Submitted by Jack Price +wellbeingzone.eu +ptplus.fit +wellbeingzone.co.uk + +// Sandstorm Development Group, Inc. : https://sandcats.io/ +// Submitted by Asheesh Laroia +sandcats.io + +// SBE network solutions GmbH : https://www.sbe.de/ +// Submitted by Norman Meilick +logoip.de +logoip.com + +// Securepoint GmbH : https://www.securepoint.de +// Submitted by Erik Anders +firewall-gateway.com +firewall-gateway.de +my-gateway.de +my-router.de +spdns.de +spdns.eu +firewall-gateway.net +my-firewall.org +myfirewall.org +spdns.org + +// Service Online LLC : http://drs.ua/ +// Submitted by Serhii Bulakh +biz.ua +co.ua +pp.ua + +// ShiftEdit : https://shiftedit.net/ +// Submitted by Adam Jimenez +shiftedit.io + +// Shopblocks : http://www.shopblocks.com/ +// Submitted by Alex Bowers +myshopblocks.com + +// SinaAppEngine : http://sae.sina.com.cn/ +// Submitted by SinaAppEngine +1kapp.com +appchizi.com +applinzi.com +sinaapp.com +vipsinaapp.com + +// Skyhat : http://www.skyhat.io +// Submitted by Shante Adam +bounty-full.com +alpha.bounty-full.com +beta.bounty-full.com + +// staticland : https://static.land +// Submitted by Seth Vincent +static.land +dev.static.land +sites.static.land + +// SourceLair PC : https://www.sourcelair.com +// Submitted by Antonis Kalipetis +apps.lair.io +*.stolos.io + +// SpaceKit : https://www.spacekit.io/ +// Submitted by Reza Akhavan +spacekit.io + +// Stackspace : https://www.stackspace.io/ +// Submitted by Lina He +stackspace.space + +// Storj Labs Inc. : https://storj.io/ +// Submitted by Philip Hutchins +storj.farm + +// Synology, Inc. : https://www.synology.com/ +// Submitted by Rony Weng +diskstation.me +dscloud.biz +dscloud.me +dscloud.mobi +dsmynas.com +dsmynas.net +dsmynas.org +familyds.com +familyds.net +familyds.org +i234.me +myds.me +synology.me + +// TAIFUN Software AG : http://taifun-software.de +// Submitted by Bjoern Henke +taifun-dns.de + +// TASK geographical domains (www.task.gda.pl/uslugi/dns) +gda.pl +gdansk.pl +gdynia.pl +med.pl +sopot.pl + +// TownNews.com : http://www.townnews.com +// Submitted by Dustin Ward +bloxcms.com +townnews-staging.com + +// TransIP : htts://www.transip.nl +// Submitted by Rory Breuk +*.transurl.be +*.transurl.eu +*.transurl.nl + +// TuxFamily : http://tuxfamily.org +// Submitted by TuxFamily administrators +tuxfamily.org + +// TwoDNS : https://www.twodns.de/ +// Submitted by TwoDNS-Support +dd-dns.de +diskstation.eu +diskstation.org +dray-dns.de +draydns.de +dyn-vpn.de +dynvpn.de +mein-vigor.de +my-vigor.de +my-wan.de +syno-ds.de +synology-diskstation.de +synology-ds.de + +// UDR Limited : http://www.udr.hk.com +// Submitted by registry +hk.com +hk.org +ltd.hk +inc.hk + +// .US +// Submitted by Ed Moore +lib.de.us + +// Viprinet Europe GmbH : http://www.viprinet.com +// Submitted by Simon Kissel +router.management + +// Western Digital Technologies, Inc : https://www.wdc.com +// Submitted by Jung Jin +remotewd.com + +// Wikimedia Labs : https://wikitech.wikimedia.org +// Submitted by Yuvi Panda +wmflabs.org + +// Yola : https://www.yola.com/ +// Submitted by Stefano Rivera +yolasite.com + +// Yombo : https://yombo.net +// Submitted by Mitch Schwenk +ybo.faith +yombo.me +homelink.one +ybo.party +ybo.review +ybo.science +ybo.trade + +// ZaNiC : http://www.za.net/ +// Submitted by registry +za.net +za.org + +// Zeit, Inc. : https://zeit.domains/ +// Submitted by Olli Vanhoja +now.sh + +// 1GB LLC : https://www.1gb.ua/ +// Submitted by 1GB LLC +cc.ua +inf.ua +ltd.ua + +// ===END PRIVATE DOMAINS=== diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/domain_name.gemspec b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/domain_name.gemspec new file mode 100644 index 0000000..7ac4c82 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/domain_name.gemspec @@ -0,0 +1,36 @@ +# -*- encoding: utf-8 -*- +lib = File.expand_path('../lib', __FILE__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) +require 'domain_name/version' + +Gem::Specification.new do |gem| + gem.name = "domain_name" + gem.version = DomainName::VERSION + gem.authors = ["Akinori MUSHA"] + gem.email = ["knu@idaemons.org"] + gem.description = <<-'EOS' +This is a Domain Name manipulation library for Ruby. + +It can also be used for cookie domain validation based on the Public +Suffix List. + EOS + gem.summary = %q{Domain Name manipulation library for Ruby} + gem.homepage = "https://github.com/knu/ruby-domain_name" + gem.licenses = ["BSD-2-Clause", "BSD-3-Clause", "MPL-2.0"] + + gem.files = `git ls-files`.split($/) + gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) } + gem.test_files = gem.files.grep(%r{^(test|spec|features)/}) + gem.require_paths = ["lib"] + + gem.extra_rdoc_files = [ + "LICENSE.txt", + "README.md" + ] + + gem.add_runtime_dependency("unf", ["< 1.0.0", ">= 0.0.5"]) + gem.add_development_dependency("test-unit", "~> 2.5.5") + gem.add_development_dependency("bundler", [">= 1.2.0"]) + gem.add_development_dependency("rake", [">= 0.9.2.2", *("< 11" if RUBY_VERSION < "1.9")]) + gem.add_development_dependency("rdoc", [">= 2.4.2"]) +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/test/helper.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/test/helper.rb new file mode 100644 index 0000000..beb8025 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/test/helper.rb @@ -0,0 +1,17 @@ +require 'rubygems' +require 'bundler' +begin + Bundler.setup(:default, :development) +rescue Bundler::BundlerError => e + $stderr.puts e.message + $stderr.puts "Run `bundle install` to install missing gems" + exit e.status_code +end +require 'test/unit' + +$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) +$LOAD_PATH.unshift(File.dirname(__FILE__)) +require 'domain_name' + +class Test::Unit::TestCase +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/test/test_domain_name-punycode.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/test/test_domain_name-punycode.rb new file mode 100644 index 0000000..5e601f2 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/test/test_domain_name-punycode.rb @@ -0,0 +1,97 @@ +require 'helper' + +class TestDomainName < Test::Unit::TestCase + test "encode labels just as listed in RFC 3492 #7.1 (slightly modified)" do + [ + ['(A) Arabic (Egyptian)', + [0x0644, 0x064A, 0x0647, 0x0645, 0x0627, 0x0628, 0x062A, 0x0643, 0x0644, + 0x0645, 0x0648, 0x0634, 0x0639, 0x0631, 0x0628, 0x064A, 0x061F], + 'egbpdaj6bu4bxfgehfvwxn'], + ['(B) Chinese (simplified)', + [0x4ED6, 0x4EEC, 0x4E3A, 0x4EC0, 0x4E48, 0x4E0D, 0x8BF4, 0x4E2D, 0x6587], + 'ihqwcrb4cv8a8dqg056pqjye'], + ['(C) Chinese (traditional)', + [0x4ED6, 0x5011, 0x7232, 0x4EC0, 0x9EBD, 0x4E0D, 0x8AAA, 0x4E2D, 0x6587], + 'ihqwctvzc91f659drss3x8bo0yb'], + ['(D) Czech: Proprostnemluvesky', + [0x0050, 0x0072, 0x006F, 0x010D, 0x0070, 0x0072, 0x006F, 0x0073, 0x0074, + 0x011B, 0x006E, 0x0065, 0x006D, 0x006C, 0x0075, 0x0076, 0x00ED, 0x010D, + 0x0065, 0x0073, 0x006B, 0x0079], + 'Proprostnemluvesky-uyb24dma41a'], + ['(E) Hebrew', + [0x05DC, 0x05DE, 0x05D4, 0x05D4, 0x05DD, 0x05E4, 0x05E9, 0x05D5, 0x05D8, + 0x05DC, 0x05D0, 0x05DE, 0x05D3, 0x05D1, 0x05E8, 0x05D9, 0x05DD, 0x05E2, + 0x05D1, 0x05E8, 0x05D9, 0x05EA], + '4dbcagdahymbxekheh6e0a7fei0b'], + ['(F) Hindi (Devanagari)', + [0x092F, 0x0939, 0x0932, 0x094B, 0x0917, 0x0939, 0x093F, 0x0928, 0x094D, + 0x0926, 0x0940, 0x0915, 0x094D, 0x092F, 0x094B, 0x0902, 0x0928, 0x0939, + 0x0940, 0x0902, 0x092C, 0x094B, 0x0932, 0x0938, 0x0915, 0x0924, 0x0947, + 0x0939, 0x0948, 0x0902], + 'i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd'], + ['(G) Japanese (kanji and hiragana)', + [0x306A, 0x305C, 0x307F, 0x3093, 0x306A, 0x65E5, 0x672C, 0x8A9E, 0x3092, + 0x8A71, 0x3057, 0x3066, 0x304F, 0x308C, 0x306A, 0x3044, 0x306E, 0x304B], + 'n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa'], + ['(H) Korean (Hangul syllables)', + [0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774, + 0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74, + 0xC5BC, 0xB9C8, 0xB098, 0xC88B, 0xC744, 0xAE4C], + '989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5j' << + 'psd879ccm6fea98c'], + ['(I) Russian (Cyrillic)', + [0x043F, 0x043E, 0x0447, 0x0435, 0x043C, 0x0443, 0x0436, 0x0435, 0x043E, + 0x043D, 0x0438, 0x043D, 0x0435, 0x0433, 0x043E, 0x0432, 0x043E, 0x0440, + 0x044F, 0x0442, 0x043F, 0x043E, 0x0440, 0x0443, 0x0441, 0x0441, 0x043A, + 0x0438], + 'b1abfaaepdrnnbgefbadotcwatmq2g4l'], + ['(J) Spanish: PorqunopuedensimplementehablarenEspaol', + [0x0050, 0x006F, 0x0072, 0x0071, 0x0075, 0x00E9, 0x006E, 0x006F, 0x0070, + 0x0075, 0x0065, 0x0064, 0x0065, 0x006E, 0x0073, 0x0069, 0x006D, 0x0070, + 0x006C, 0x0065, 0x006D, 0x0065, 0x006E, 0x0074, 0x0065, 0x0068, 0x0061, + 0x0062, 0x006C, 0x0061, 0x0072, 0x0065, 0x006E, 0x0045, 0x0073, 0x0070, + 0x0061, 0x00F1, 0x006F, 0x006C], + 'PorqunopuedensimplementehablarenEspaol-fmd56a'], + ['(K) Vietnamese: Tisaohkhngthch' << + 'nitingVit', + [0x0054, 0x1EA1, 0x0069, 0x0073, 0x0061, 0x006F, 0x0068, 0x1ECD, 0x006B, + 0x0068, 0x00F4, 0x006E, 0x0067, 0x0074, 0x0068, 0x1EC3, 0x0063, 0x0068, + 0x1EC9, 0x006E, 0x00F3, 0x0069, 0x0074, 0x0069, 0x1EBF, 0x006E, 0x0067, + 0x0056, 0x0069, 0x1EC7, 0x0074], + 'TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g'], + ['(L) 3B', + [0x0033, 0x5E74, 0x0042, 0x7D44, 0x91D1, 0x516B, 0x5148, 0x751F], + '3B-ww4c5e180e575a65lsy2b'], + ['(M) -with-SUPER-MONKEYS', + [0x5B89, 0x5BA4, 0x5948, 0x7F8E, 0x6075, 0x002D, 0x0077, 0x0069, 0x0074, + 0x0068, 0x002D, 0x0053, 0x0055, 0x0050, 0x0045, 0x0052, 0x002D, 0x004D, + 0x004F, 0x004E, 0x004B, 0x0045, 0x0059, 0x0053], + '-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n'], + ['(N) Hello-Another-Way-', + [0x0048, 0x0065, 0x006C, 0x006C, 0x006F, 0x002D, 0x0041, 0x006E, 0x006F, + 0x0074, 0x0068, 0x0065, 0x0072, 0x002D, 0x0057, 0x0061, 0x0079, 0x002D, + 0x305D, 0x308C, 0x305E, 0x308C, 0x306E, 0x5834, 0x6240], + 'Hello-Another-Way--fc4qua05auwb3674vfr0b'], + ['(O) 2', + [0x3072, 0x3068, 0x3064, 0x5C4B, 0x6839, 0x306E, 0x4E0B, 0x0032], + '2-u9tlzr9756bt3uc0v'], + ['(P) MajiKoi5', + [0x004D, 0x0061, 0x006A, 0x0069, 0x3067, 0x004B, 0x006F, 0x0069, 0x3059, + 0x308B, 0x0035, 0x79D2, 0x524D], + 'MajiKoi5-783gue6qz075azm5e'], + ['(Q) de', + [0x30D1, 0x30D5, 0x30A3, 0x30FC, 0x0064, 0x0065, 0x30EB, 0x30F3, 0x30D0], + 'de-jg4avhby1noc0d'], + ['(R) ', + [0x305D, 0x306E, 0x30B9, 0x30D4, 0x30FC, 0x30C9, 0x3067], + 'd9juau41awczczp'], + ['(S) -> $1.00 <-', + [0x002D, 0x003E, 0x0020, 0x0024, 0x0031, 0x002E, 0x0030, 0x0030, 0x0020, + 0x003C, 0x002D], + '-> $1.00 <--'] + ].each { |title, cps, punycode| + assert_equal punycode, DomainName::Punycode.encode(cps.pack('U*')), title + assert_equal cps.pack('U*').to_nfc, DomainName::Punycode.decode(punycode), title + } + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/test/test_domain_name.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/test/test_domain_name.rb new file mode 100644 index 0000000..86696cc --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/test/test_domain_name.rb @@ -0,0 +1,317 @@ +# -*- coding: utf-8 -*- +require 'helper' +require 'ipaddr' + +class TestDomainName < Test::Unit::TestCase + test "raise ArgumentError if hostname starts with a dot" do + [ + # Leading dot. + '.com', + '.example', + '.example.com', + '.example.example', + ].each { |hostname| + assert_raises(ArgumentError) { DomainName.new(hostname) } + } + end + + test "accept a String-alike for initialization" do + Object.new.tap { |obj| + def obj.to_str + "Example.org" + end + assert_equal "example.org", DomainName.new(obj).hostname + } + + Object.new.tap { |obj| + def obj.to_str + 123 + end + assert_raises(TypeError) { DomainName.new(obj) } + } + + Object.new.tap { |obj| + assert_raises(TypeError) { DomainName.new(obj) } + } + end + + test "parse canonical domain names correctly" do + [ + # Mixed case. + ['COM', nil, false, 'com', true], + ['example.COM', 'example.com', true, 'com', true], + ['WwW.example.COM', 'example.com', true, 'com', true], + # Unlisted TLD. + ['example', 'example', false, 'example', false], + ['example.example', 'example.example', false, 'example', false], + ['b.example.example', 'example.example', false, 'example', false], + ['a.b.example.example', 'example.example', false, 'example', false], + # Listed, but non-Internet, TLD. + ['local', 'local', false, 'local', false], + ['example.local', 'example.local', false, 'local', false], + ['b.example.local', 'example.local', false, 'local', false], + ['a.b.example.local', 'example.local', false, 'local', false], + # TLD with only 1 rule. + ['biz', nil, false, 'biz', true], + ['domain.biz', 'domain.biz', true, 'biz', true], + ['b.domain.biz', 'domain.biz', true, 'biz', true], + ['a.b.domain.biz', 'domain.biz', true, 'biz', true], + # TLD with some 2-level rules. + ['com', nil, false, 'com', true], + ['example.com', 'example.com', true, 'com', true], + ['b.example.com', 'example.com', true, 'com', true], + ['a.b.example.com', 'example.com', true, 'com', true], + ['uk.com', nil, false, 'com', true], + ['example.uk.com', 'example.uk.com', true, 'com', true], + ['b.example.uk.com', 'example.uk.com', true, 'com', true], + ['a.b.example.uk.com', 'example.uk.com', true, 'com', true], + ['test.ac', 'test.ac', true, 'ac', true], + # TLD with only 1 (wildcard) rule. + ['bd', nil, false, 'bd', true], + ['c.bd', nil, false, 'bd', true], + ['b.c.bd', 'b.c.bd', true, 'bd', true], + ['a.b.c.bd', 'b.c.bd', true, 'bd', true], + # More complex TLD. + ['jp', nil, false, 'jp', true], + ['test.jp', 'test.jp', true, 'jp', true], + ['www.test.jp', 'test.jp', true, 'jp', true], + ['ac.jp', nil, false, 'jp', true], + ['test.ac.jp', 'test.ac.jp', true, 'jp', true], + ['www.test.ac.jp', 'test.ac.jp', true, 'jp', true], + ['kyoto.jp', nil, false, 'jp', true], + ['test.kyoto.jp', 'test.kyoto.jp', true, 'jp', true], + ['ide.kyoto.jp', nil, false, 'jp', true], + ['b.ide.kyoto.jp', 'b.ide.kyoto.jp', true, 'jp', true], + ['a.b.ide.kyoto.jp', 'b.ide.kyoto.jp', true, 'jp', true], + ['c.kobe.jp', nil, false, 'jp', true], + ['b.c.kobe.jp', 'b.c.kobe.jp', true, 'jp', true], + ['a.b.c.kobe.jp', 'b.c.kobe.jp', true, 'jp', true], + ['city.kobe.jp', 'city.kobe.jp', true, 'jp', true], + ['www.city.kobe.jp', 'city.kobe.jp', true, 'jp', true], + # TLD with a wildcard rule and exceptions. + ['ck', nil, false, 'ck', true], + ['test.ck', nil, false, 'ck', true], + ['b.test.ck', 'b.test.ck', true, 'ck', true], + ['a.b.test.ck', 'b.test.ck', true, 'ck', true], + ['www.ck', 'www.ck', true, 'ck', true], + ['www.www.ck', 'www.ck', true, 'ck', true], + # US K12. + ['us', nil, false, 'us', true], + ['test.us', 'test.us', true, 'us', true], + ['www.test.us', 'test.us', true, 'us', true], + ['ak.us', nil, false, 'us', true], + ['test.ak.us', 'test.ak.us', true, 'us', true], + ['www.test.ak.us', 'test.ak.us', true, 'us', true], + ['k12.ak.us', nil, false, 'us', true], + ['test.k12.ak.us', 'test.k12.ak.us', true, 'us', true], + ['www.test.k12.ak.us', 'test.k12.ak.us', true, 'us', true], + # IDN labels. (modified; currently DomainName always converts U-labels to A-labels) + ['食狮.com.cn', 'xn--85x722f.com.cn', true, 'cn', true], + ['食狮.公司.cn', 'xn--85x722f.xn--55qx5d.cn', true, 'cn', true], + ['www.食狮.公司.cn', 'xn--85x722f.xn--55qx5d.cn', true, 'cn', true], + ['shishi.公司.cn', 'shishi.xn--55qx5d.cn', true, 'cn', true], + ['公司.cn', nil, false, 'cn', true], + ['食狮.中国', 'xn--85x722f.xn--fiqs8s', true, 'xn--fiqs8s', true], + ['www.食狮.中国', 'xn--85x722f.xn--fiqs8s', true, 'xn--fiqs8s', true], + ['shishi.中国', 'shishi.xn--fiqs8s', true, 'xn--fiqs8s', true], + ['中国', nil, false, 'xn--fiqs8s', true], + # Same as above, but punycoded. + ['xn--85x722f.com.cn', 'xn--85x722f.com.cn', true, 'cn', true], + ['xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn', true, 'cn', true], + ['www.xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn', true, 'cn', true], + ['shishi.xn--55qx5d.cn', 'shishi.xn--55qx5d.cn', true, 'cn', true], + ['xn--55qx5d.cn', nil, false, 'cn', true], + ['xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s', true, 'xn--fiqs8s', true], + ['www.xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s', true, 'xn--fiqs8s', true], + ['shishi.xn--fiqs8s', 'shishi.xn--fiqs8s', true, 'xn--fiqs8s', true], + ['xn--fiqs8s', nil, false, 'xn--fiqs8s', true], + ].each { |hostname, domain, canonical, tld, canonical_tld| + dn = DomainName.new(hostname) + assert_equal(domain, dn.domain, hostname + ':domain') + assert_equal(canonical, dn.canonical?, hostname + ':canoninal?') + assert_equal(tld, dn.tld, hostname + ':tld') + assert_equal(canonical_tld, dn.canonical_tld?, hostname + ':canoninal_tld?') + } + end + + test "compare hostnames correctly" do + [ + ["foo.com", "abc.foo.com", 1], + ["COM", "abc.foo.com", 1], + ["abc.def.foo.com", "foo.com", -1], + ["abc.def.foo.com", "ABC.def.FOO.com", 0], + ["abc.def.foo.com", "bar.com", nil], + ].each { |x, y, v| + dx, dy = DomainName(x), DomainName(y) + [ + [dx, y, v], + [dx, dy, v], + [dy, x, v ? -v : v], + [dy, dx, v ? -v : v], + ].each { |a, b, expected| + assert_equal expected, a <=> b + case expected + when 1 + assert_equal(true, a > b) + assert_equal(true, a >= b) + assert_equal(false, a == b) + assert_equal(false, a <= b) + assert_equal(false, a < b) + when -1 + assert_equal(true, a < b) + assert_equal(true, a <= b) + assert_equal(false, a == b) + assert_equal(false, a >= b) + assert_equal(false, a > b) + when 0 + assert_equal(false, a < b) + assert_equal(true, a <= b) + assert_equal(true, a == b) + assert_equal(true, a >= b) + assert_equal(false, a > b) + when nil + assert_equal(nil, a < b) + assert_equal(nil, a <= b) + assert_equal(false, a == b) + assert_equal(nil, a >= b) + assert_equal(nil, a > b) + end + } + } + end + + test "check cookie domain correctly" do + { + 'com' => [ + ['com', false], + ['example.com', false], + ['foo.example.com', false], + ['bar.foo.example.com', false], + ], + + 'example.com' => [ + ['com', false], + ['example.com', true], + ['foo.example.com', false], + ['bar.foo.example.com', false], + ], + + 'foo.example.com' => [ + ['com', false], + ['example.com', true], + ['foo.example.com', true], + ['foo.Example.com', true], + ['bar.foo.example.com', false], + ['bar.Foo.Example.com', false], + ], + + 'b.sapporo.jp' => [ + ['jp', false], + ['sapporo.jp', false], + ['b.sapporo.jp', false], + ['a.b.sapporo.jp', false], + ], + + 'b.c.sapporo.jp' => [ + ['jp', false], + ['sapporo.jp', false], + ['c.sapporo.jp', false], + ['b.c.sapporo.jp', true], + ['a.b.c.sapporo.jp', false], + ], + + 'b.c.d.sapporo.jp' => [ + ['jp', false], + ['sapporo.jp', false], + ['d.sapporo.jp', false], + ['c.d.sapporo.jp', true], + ['b.c.d.sapporo.jp', true], + ['a.b.c.d.sapporo.jp', false], + ], + + 'city.sapporo.jp' => [ + ['jp', false], + ['sapporo.jp', false], + ['city.sapporo.jp', true], + ['a.city.sapporo.jp', false], + ], + + 'b.city.sapporo.jp' => [ + ['jp', false], + ['sapporo.jp', false], + ['city.sapporo.jp', true], + ['b.city.sapporo.jp', true], + ['a.b.city.sapporo.jp', false], + ], + }.each_pair { |host, pairs| + dn = DomainName(host) + assert_equal(true, dn.cookie_domain?(host.upcase, true), dn.to_s) + assert_equal(true, dn.cookie_domain?(host.downcase, true), dn.to_s) + assert_equal(false, dn.cookie_domain?("www." << host, true), dn.to_s) + pairs.each { |domain, expected| + assert_equal(expected, dn.cookie_domain?(domain), "%s - %s" % [dn.to_s, domain]) + assert_equal(expected, dn.cookie_domain?(DomainName(domain)), "%s - %s" % [dn.to_s, domain]) + } + } + end + + test "parse IPv4 addresseses" do + a = '192.168.10.20' + dn = DomainName(a) + assert_equal(a, dn.hostname) + assert_equal(true, dn.ipaddr?) + assert_equal(IPAddr.new(a), dn.ipaddr) + assert_equal(true, dn.cookie_domain?(a)) + assert_equal(true, dn.cookie_domain?(a, true)) + assert_equal(true, dn.cookie_domain?(dn)) + assert_equal(true, dn.cookie_domain?(dn, true)) + assert_equal(false, dn.cookie_domain?('168.10.20')) + assert_equal(false, dn.cookie_domain?('20')) + assert_equal(nil, dn.superdomain) + end + + test "parse IPv6 addresseses" do + a = '2001:200:dff:fff1:216:3eff:feb1:44d7' + b = '2001:0200:0dff:fff1:0216:3eff:feb1:44d7' + [b, b.upcase, "[#{b}]", "[#{b.upcase}]"].each { |host| + dn = DomainName(host) + assert_equal("[#{a}]", dn.uri_host) + assert_equal(a, dn.hostname) + assert_equal(true, dn.ipaddr?) + assert_equal(IPAddr.new(a), dn.ipaddr) + assert_equal(true, dn.cookie_domain?(host)) + assert_equal(true, dn.cookie_domain?(host, true)) + assert_equal(true, dn.cookie_domain?(dn)) + assert_equal(true, dn.cookie_domain?(dn, true)) + assert_equal(true, dn.cookie_domain?(a)) + assert_equal(true, dn.cookie_domain?(a, true)) + assert_equal(nil, dn.superdomain) + } + end + + test "get superdomain" do + [ + %w[www.sub.example.local sub.example.local example.local local], + %w[www.sub.example.com sub.example.com example.com com], + ].each { |domain, *superdomains| + dn = DomainName(domain) + superdomains.each { |superdomain| + sdn = DomainName(superdomain) + assert_equal sdn, dn.superdomain + dn = sdn + } + assert_equal nil, dn.superdomain + } + end + + test "have idn methods" do + dn = DomainName("金八先生.B組.3年.日本語ドメイン名Example.日本") + + assert_equal "xn--44q1cv48kq8x.xn--b-gf6c.xn--3-pj3b.xn--example-6q4fyliikhk162btq3b2zd4y2o.xn--wgv71a", dn.hostname + assert_equal "金八先生.b組.3年.日本語ドメイン名example.日本", dn.hostname_idn + assert_equal "xn--example-6q4fyliikhk162btq3b2zd4y2o.xn--wgv71a", dn.domain + assert_equal "日本語ドメイン名example.日本", dn.domain_idn + assert_equal "xn--wgv71a", dn.tld + assert_equal "日本", dn.tld_idn + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/tool/gen_etld_data.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/tool/gen_etld_data.rb new file mode 100755 index 0000000..4340c8e --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/domain_name-0.5.20170404/tool/gen_etld_data.rb @@ -0,0 +1,63 @@ +#!/usr/bin/env ruby + +require 'rubygems' +require 'pathname' +$basedir = Pathname.new(__FILE__).dirname.parent +$LOAD_PATH.unshift $basedir + 'lib' +require 'domain_name' +require 'set' +require 'erb' + +def main + dat_file = $basedir + 'data' + 'public_suffix_list.dat' + dir = $basedir + 'lib' + 'domain_name' + erb_file = dir + 'etld_data.rb.erb' + rb_file = dir + 'etld_data.rb' + + etld_data_date = File.mtime(dat_file) + + File.open(dat_file, 'r:utf-8') { |dat| + etld_data = parse(dat) + File.open(rb_file, 'w:utf-8') { |rb| + File.open(erb_file, 'r:utf-8') { |erb| + rb.print ERB.new(erb.read).result(binding) + } + } + } +end + +def normalize_hostname(domain) + DomainName.normalize(domain) +end + +def parse(f) + {}.tap { |table| + tlds = Set[] + f.each_line { |line| + line.sub!(%r{//.*}, '') + line.strip! + next if line.empty? + case line + when /^local$/ + # ignore .local + next + when /^([^!*]+)$/ + domain = normalize_hostname($1) + value = 0 + when /^\*\.([^!*]+)$/ + domain = normalize_hostname($1) + value = -1 + when /^\!([^!*]+)$/ + domain = normalize_hostname($1) + value = 1 + else + raise "syntax error: #{line}" + end + tld = domain.match(/(?:^|\.)([^.]+)$/)[1] + table[tld] ||= 1 + table[domain] = value + } + } +end + +main() diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/CHANGES.txt b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/CHANGES.txt new file mode 100644 index 0000000..bed32be --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/CHANGES.txt @@ -0,0 +1,828 @@ +# -*- coding: utf-8 -*- +# $Release: 2.7.0 $ +# copyright(c) 2006-2011 kuwata-lab.com all rights reserved. + +- release: 2.7.0 + date: 2011-04-01 + enhancements: + + - | + New option ':bufvar' supported to specify buffer variable name. + + ex: + input = "Hello <%= name %>!" + eruby = Erubis::Eruby.new(input) + puts eruby.src + #=> _buf = ''; _buf << "Hello "; _buf << ( name ).to_s; _buf << '!'; + + eruby = Erubis::Eruby.new(input, :bufvar=>'@_out') + puts eruby.src + #=> @_out = ''; @_out << 'Hello '; @_out << ( name ).to_s; @_out << '!'; + + - | + New enhancer 'PrefixedLineEnhancer' which is a customizable version + of PercentLineEnhancer. + The difference between PrefixedLineEnhancer and PercentLineEnhancer is: + * You can indent Ruby statetment lines starting with '%' + * You can specify prefix character by :prefixchar option. + + ex: + class MyEruby < Erubis::Eruby + include Erubis::PrefixedLineEnhancer + end + input = < + % for item in @items +
  • <%= item %>
  • + % end + %% you can indent '%' lines + + END + eruby = MyEruby.new(input, :prefixchar=>'%') # default '%' + puts eruby.src + + output: + _buf = ''; _buf << '
      + '; for item in @items + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end + % you can indent '%' lines + _buf << '
    + '; + _buf.to_s + + - | + Add helper CGI script. See 'public_html/README.txt' for details. + + - | + Rubinius is supported as first-class Ruby implementation. + + - | + C++ support. Try '-l cpp' command-line option. + + + changes: + + - | + Remove dependency to 'abstract' library. + You don't need to install 'abstract' gem. + + - | + Erubis::Eruby#load_file() now sets cache file timestamp to the same + value as original eRuby file. For example, if you restore eRuby files + from backup, Erubis::Eruby#load_file() can detect it and generate + cache file again. + + ## generates cache file (A.rhtml.cache). + eruby = Erubis::Eruby.load_file('A.rhtml') + p File.mtime('A.rhtml') == File.mtime('A.rhtml.cache') #=> true + + + +- release: 2.6.6 + date: 2010-06-27 + bugfixes: + + - | + Fixed a bug around InterporationEnhancer and FastEruby to escape back-quote. (thanks to Andrew R Jackson) + + +- release: 2.6.5 + date: 2009-07-20 + bugfixes: + + - | + Fixed bug around '-z' option. + + +- release: 2.6.4 + date: 2009-02-18 + enhancements: + + - | + Rails 2.2 and 2.3 support. + + + +- release: 2.6.3 + date: 2009-02-07 + bugfixes: + + - Enhancer name was not displayed in Ruby 1.9.1 when it was missing. + + - Command option argument name was not displayed correctly as a part of error message. + + - MethoNotFound error was raised when invalid option was specified. + + +- release: 2.6.2 + date: 2008-06-12 + enhancements: + + - | + Ruby 1.9 support. + + bugfixes: + + - | + Fixed installation problem on Windows (Thanks to Tim Morgan and Allen). + + +- release: 2.6.1 + date: 2008-06-06 + enhancements: + + - | + Rails 2.1 support. (special thanks José Valim) + + + +- release: 2.6.0 + date: 2008-05-05 + enhancements: + + - | + Improved support of Ruby on Rails 2.0.2. + New class ActionView::TemplateHandlers::Erubis is defined and + registered as default handler of *.html.erb and *.rhtml. + + - | + '<%% %>' and '<%%= %>' are converted into '<% %>' and '<%= %>' respectively. + This is for compatibility with ERB. + + ex1.rhtml: +
      + <%% for item in @list %> +
    • <%%= item %>
    • + <%% end %> +
    + + result: + $ erubis ex1.rhtml +
      + <% for item in @list %> +
    • <%= item %>
    • + <% end %> +
    + + - | + '<%= -%>' removes tail spaces and newlines. + This is for compatibiliy with ERB when trim mode is '-'. + '<%= =%>' also removes tail spaces and newlines, and this is + Erubis-original enhancement (cooler than '<%= -%>', isn't it?). + + ex2.rhtml: +
    + <%= @var -%> # or <%= @var =%> +
    + + result (version 2.6.0): + $ erubis -c '{var: "AAA\n"}' ex2.rhtml +
    + AAA +
    + + result (version 2.5.0): + $ erubis -c '{var: "AAA\n"}' ex2.rhtml +
    + AAA + +
    + + - | + Erubis::Eruby.load_file() now allows you to change cache filename. + + ex. + eruby = Erubis::Eruby.load_file("ex3.rhtml", + :cachename=>'ex3.rhtml.cache') + + +- release: 2.5.0 + date: 2008-01-30 + enhancements: + + - | + Ruby on Rails 2.0 support. + If you are using preprocessing, notice that _?('foo.id') will be NG + because it contains period ('.') character. + + -------------------- + + [%= link_to 'Edit', edit_user_path(_?('@user.id')) %] + [%= link_to 'Show', @user %] + [%= link_to 'Delete', @user, :confirm=>'OK?', :method=>:delete %] + + + <%= user_id = @user.id %> + [%= link_to 'Edit', edit_user_path(_?('user_id')) %] + [%= link_to 'Show', :action=>'show', :id=>_?('user_id') %] + [%= link_to 'Delete', {:action=>'destroy', :id=>_?('user_id')}, + {:confirm=>'OK?', :method=>:delete} %] + -------------------- + + - | + (experimental) + Rails form helper methods for preprocessing are added. + These helper methos are available with preprocessing. + + ex. _form.rhtml + -------------------- + Name: <%= text_field :user, :name %> + Name: [%= pp_text_field :user, :name %] + -------------------- + + preprocessed: + -------------------- + Name: <%= text_field :user, :name %> + Name: + -------------------- + + Ruby code: + -------------------- + _buf << ' + Name: '; _buf << ( text_field :stock, :name ).to_s; _buf << ' + Name: + '; + -------------------- + + This shows that text_filed() is called every time when rendering, + but pp_text_filed() is called only once when loading template, + so pp_text_field() with prepocessing is much faster than text_field(). + + See User's guide for details. + http://www.kuwata-lab.com/erubis/users-guide.05.html#rails-formhelpers + +# +- release: 2.4.1 + date: 2007-09-25 + enhancements: + + - | + Add new section 'evaluate(context) v.s. result(binding)' to user's guide. + This section describes why Erubis::Eruby#evaluate(context) is recommended + rather than Erubis::Eruby#result(binding). + User's Guide > Other Topics > evaluate(context) v.s. result(binding) + http://www.kuwata-lab.com/erubis/users-guide.06.html#topics-context-vs-binding + + - | + Add new command-line property '--docwrite={true|false}' to + Erubis::Ejavascript. + If this property is true then 'document.write(_buf.join(""));' is used + as postamble and if it is false then '_buf.join("")' is used. + Default is true for compatibility reason but it will be false in the + future release. + (This feature was proposed by D.Dribin. Thank you.) + + bugfix: + + - | + When using Erubis::Eruby#evaluate(), changing local variables in + templates have affected to variables accessible with TOPLEVEL_BINDING. + It means that if you change variables in templates, it is possible to + change variables in main program. + This was a bug and is now fixed not to affect to variables in main + program. + + ex. template.rhtml + -------------------- + <% for x in @items %> + item = <%= x %> + <% end %> + -------------------- + + ex. main-program.rb + -------------------- + require 'erubis' + x = 10 + items = ['foo', 'bar', 'baz'] + eruby = Erubis::Eruby.new(File.read('template.rhtml')) + s = eruby.evaluate(:items=>items) + print s + $stderr.puts "*** debug: x=#{x.inspect}" #=> x="baz" (2.4.0) + #=> x=10 (2.4.1) + -------------------- + + - | + PercentLineEnhancer was very slow. Now performance problem is solved. + + +# +- release: 2.4.0 + date: 2007-07-19 + enhancements: + + - | + Preprocessing is supported by Ruby on Rails helper. + Preprocessing makes Ruby on Rails application about 20-40 percent faster. + + For example, + + [%= link_to 'Show', :action=>'show', :id=>_?('@user.id') %] + + is evaluate by preprocessor and expanded into the following + when template file is loaded. + +
    Show + + It means that link_to() is not called when template is rendered + and rendering speed will be much faster in the result. + + See User's Guide for details. + + - | + Erubis::Eruby#evaluate() (or Erubis::RubyEvaluator#evaluate()) now + creates Proc object from @src and eval it. + + def evaluate(context=Context.new) + context = Context.new(context) if context.is_a?(Hash) + @_proc ||= eval("proc { #{@src} }", TOPLEVEL_BINDING, @filename || '(erubis)') + return context.instance_eval(&@_proc) + end + + This makes evaluate() much faster when eruby object is reused. + + - | + Erubis::Eruby#def_method() is supported. + This method defines ruby code as instance method or singleton metod. + + require 'erubis' + s = "hello <%= name %>" + eruby = Erubis::Eruby.new(s) + filename = 'hello.rhtml' + + ## define instance method to Dummy class (or module) + class Dummy; end + eruby.def_method(Dummy, 'render(name)', filename) # filename is optional + p Dummy.new.render('world') #=> "hello world" + + ## define singleton method to an object + obj = Object.new + eruby.def_method(obj, 'render(name)', filename) # filename is optional + p obj.render('world') #=> "hello world" + + This is equivarent to ERB#def_method(). + + - | + Erubis::XmlHelper.url_escape() and u() which is alias of url_escape() + are added. + This is equivarent to ERB#Util.url_escape(). + + + bugfix: + - Help message was not shown when '-h' is specified. Fixed. + - 'def method()' was not availabe in template file. Fixed. + + +# +- release: 2.3.1 + date: 2007-05-26 + bugfix: + - A serious bug in 'helpers/rails_helper.rb' is fixed. + You must be update if you are using Erubis with Ruby on Rails. + + +# +- release: 2.3.0 + date: 2007-05-23 + enhancements: + - | + New class 'Erubis::FastEruby' is added. + It is a subclass of Erubis::Eruby and includes InterpolationEnhancer. + Erubis::FastEruby is compatible with and faster than Erubis::Eruby. + + - | + New enhancer 'InterpolationEnhancer' is added. + This enhancer uses expression interpolation to eliminate method call + of String#<<. In the result, this enhancer makes Eruby a little faster. + + -------------------- + ## Assume that input is '<%=name%>'. + ## Eruby convert input into the following code. String#<< is called 5 times. + _buf << ''; _buf << (name).to_s; _buf << ''; + + ## When InterpolationEnhancer is used, String#<< is called only once. + _buf << %Q`#{name}`; + -------------------- + + - | + New enhancer 'ErboutEnhancer' is added. + ErboutEnhancer set '_erbout' as well as '_buf' to be compatible with ERB. + + ex. + ==================== + $ cat ex.rhtml +

    Hello

    + $ erubis -x ex.rhtml + _buf = ''; _buf << '

    Hello

    + '; + _buf.to_s + $ erubis -xE Erbout ex.rhtml + _erbout = _buf = ''; _buf << '

    Hello

    + '; + _buf.to_s + ==================== + + - | + [experimental] + New enhancer 'DeleteIndentEnhancer' is added. + This enhancer deletes indentation of HTML file. + + ex. + ==================== + $ cat ex.rhtml +
    +
      + <% for item in ['AAA', 'BBB', 'CCC'] %> +
    • <%= item %>
    • + <% end %> +
    +
    + $ erubis ex.rhtml +
    +
      +
    • AAA
    • +
    • BBB
    • +
    • CCC
    • +
    +
    + $ erubis -E DeleteIndent ex.rhtml +
    +
      +
    • AAA
    • +
    • BBB
    • +
    • CCC
    • +
    +
    + ==================== + + - | + Mod_ruby is supported (very thanks to Andrew R Jackson!). + See users-guide and 'contrib/erubis-run.rb' for details. + + - | + New command-line option '-X', '-N', '-U', and '-C' are added. + These are intended to be a replacement of 'notext' command. + '-X' shows only ruby statements and expressions. + '-N' adds line numbers. + '-U' compress empty lines into a line. + '-C' removes empty lines. + + + changes: + + - | + 'helpers/rails_helper.rb' is changed to use ErboutEnhancer. + The following is an examle to use Erubis with Ruby on Rails. + + File 'config/environment.rb': + ---------------------------------------- + require 'erubis/helpers/rails_helper' + #Erubis::Helpers::RailsHelper.engine_class = Erubis::Eruby # or Erubis::FastEruby + #Erubis::Helpers::RailsHelper.init_properties = {} + #Erubis::Helpers::RailsHelper.show_src = false # set true for debugging + ---------------------------------------- + + - | + Command 'notext' has been removed. Use '-X', '-N', '-U', and '-C' + instead. + + - | + Tab characters in YAML file are expaneded automatically. + If you want not to expand tab characters, add command-line optio '-T'. + + - | + Benchmark scripts (benchmark/bench.*) are rewrited. + + - | + Users-guide (doc/users-guide.html) is updated. + + + +# +- release: 2.2.0 + date: 2007-02-11 + enhancements: + - | + Performance tuned up. Release 2.2.0 works about 8 percent faster + than 2.1.0. + As a result, Erubis works more than 10 percent faster than eruby. + (eruby is the extension module of eRuby written in C.) + + - | + Support of Ruby on Rails improved. + If you want to use Erubis with Ruby on Rails, add the following code + into your 'config/environment.rb' and restart web server. + This will set Erubis as eRuby compiler in Ruby on Rails instead of ERB. + + -------------------- + require 'erubis/helpers/rails_helper' + #Erubis::Helpers::RailsHelper.engine_class = Erubis::Eruby + #Erubis::Helpers::RailsHelper.init_properties = {} + #Erubis::Helpers::RailsHelper.show_src = true + -------------------- + + Methods 'capture()' and 'content_for()' of ActionView::Helpers::CaptureHelper + are available. Methd ActionView::Helpers::TextHelper#concat() is also available. + + If Erubis::Helpers::RailsHelper.show_src is ture, Erubis prints converted + Ruby code into log file (such as 'log/development.log'). + + - | + Erubis::Engine.load_file(filename) creates cache file (filename + + '.cache') automatically if cache file is old or not exist. + Caching makes Erubis about 40-50 percent faster. + + ex. + -------------------- + require 'erubis' + eruby = Erubis::Eruby.load_file('example.rhtml') + ## cache file 'example.rhtml.cache' is created automatically + -------------------- + + - | + Command-line option '-f datafile' can take Ruby script ('*.rb') + as well as YAML file ('*.yaml' or '*.yml'). + + ex. + ==================== + $ cat context.rb + @title = 'Example' + @list = %w[AAA BBB CCC] + $ cat example.rhtml +

    <%= @title %>

    +
      + <% for item in @list %> +
    • <%= item %>
    • + <% end %> +
    + $ erubis -f context.rb example.rhtml +

    Example

    +
      +
    • AAA
    • +
    • BBB
    • +
    • CCC
    • +
    + ==================== + + - | + New command-line option '-c context' support. It takes context string + in YAML inline style or Ruby code style. + + ex. YAML inline style + ==================== + $ erubis -c '{title: Example, list: [AAA, BBB, CCC]}' example.rhtml + ==================== + + ex. Ruby style + ==================== + $ erubis -c '@title="Example"; @list=%w[AAA BBB CCC]' example.rhtml + ==================== + + - | + New command-line option '-z' (syntax checking) support. It is similar + to 'erubis -x file.rhtml | ruby -wc', but it can take several filenames. + + ex. + ==================== + $ erubis -z app/views/*/*.rhtml + Syntax OK + ==================== + + - | + New constant Erubis::VERSION added. + + + changes: + - | + Class Erubis::Eruby changed to include Erubis::StringBufferEnhancer + instead of Erubis::ArrayBufferEnhancer. + This is for Ruby on Rails support. + + ex. + ==================== + $ cat example.rhtml +
      + <% for item in @list %> +
    • <%= item %>
    • + <% end %> +
    + $ erubis -x example.rhtml + _buf = ''; _buf << '
      + '; for item in @list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end + _buf << '
    + '; + _buf.to_s + ==================== + + - | + Erubis::StringBufferEnhancer#add_postamble() prints "_buf.to_s" + instead of "_buf". + This is useful for 'erubis -x file.rhtml | ruby -wc'. + + - | + Command-line option '-T' is removed. Use '--trim=false' instead. + + - | + License is changed to MIT License. + + - | + Embedded pattern '<%- -%>' can be handled. + + +# +- release: 2.1.0 + date: 2006-09-23 + enhancements: + - | + Ruby on Rails support. Add the following code to + your 'app/controllers/application.rb' and restart web server. + + -------------------- + require 'erubis/helper/rails' + suffix = 'erubis' + ActionView::Base.register_template_handler(suffix, Erubis::Helper::RailsTemplate) + #Erubis::Helper::RailsTemplate.engine_class = Erubis::EscapedEruby ## or Erubis::PI::Eruby + #Erubis::Helper::RailsTemplate.default_properties = { :escape=>true, :escapefunc=>'h' } + -------------------- + + And rename your view template as 'xxx.erubis'. + If you got the "(eval):10:in `render': no block given" error, + use '@content_for_layout' instead 'yield' in your layout template. + + - | + Another eRuby engine (PIEngine) support. This engine doesn't + break HTML design because it uses Processing Instructions (PI) + '' as embedded pattern instead of '<% .. %>'. + + example.rhtml + -------------------- + + + + + + + +
    @!{item}@
    + -------------------- + + compile: + ==================== + $ erubis -x --pi example.rhtml + _buf = []; _buf << ' + '; @list.each_with_index do |item, i| + klass = i % 2 == 0 ? 'odd' : 'even' + _buf << ' + + + '; end + _buf << '
    '; _buf << (item).to_s; _buf << '
    + '; + _buf.join + ==================== + + - | + Add new command 'notext' which remove text part from eRuby + script and leaves only Ruby code. + This is very useful for debug of eRuby script. + + example2.rhtml + -------------------- + + + + <% @list.each_with_index do |item, i| %> + <% klass = i % 2 == 0 ? 'odd' : 'even' %> + + + + <% end %> +
    <%== item %>
    + + + -------------------- + + command line example: + ==================== + $ notext example2.rhtml + _buf = []; + + + @list.each_with_index do |item, i| ; + klass = i % 2 == 0 ? 'odd' : 'even' ; + _buf << ( klass ).to_s; + _buf << Erubis::XmlHelper.escape_xml( item ); + + end ; + + + + _buf.join + $ notext -nc example2.rhtml + 1: _buf = []; + 4: @list.each_with_index do |item, i| ; + 5: klass = i % 2 == 0 ? 'odd' : 'even' ; + 6: _buf << ( klass ).to_s; + 7: _buf << Erubis::XmlHelper.escape_xml( item ); + 9: end ; + 13: _buf.join + ==================== + + - | + Add new enhance 'NoCode' which removes ruby code from + eRuby script and leaves only HTML text part. + It is very useful to validate HTML of eRuby script. + + command-line example: + ==================== + $ erubis -x -E NoCode example2.rhtml + + + + + + + + + +
    + + + ==================== + + changes: + - License is changed to LGPL. + - Command-line property '--escape=name' is renamed to + '--escapefunc=name'. + - When command-line option '-l perl' is specified, function + 'encode_entities()' is used ad escaping function which is + available wth HTML::Entities module. + + bugfix: + - There is a certain pattern which makes Engine#convert() + too slow. Now Engne#convert() is fixed not to be slown. + - Command name is now displayed when '-h' is specified. + + +# +- release: 2.0.1 + date: 2006-06-21 + bugfix: + - some minor bugs are fixed + + +# +- release: 2.0.0 + date: 2006-05-20 + changes: + - module 'PrintEnhancer' is renamed to 'PrintEnabledEnahncer' + - module 'FastEnhancer' and class 'FastEruby' is obsolete because they are integrated into Eruby class + - Eruby#evaluate() calls instance_eval() instead of eval() + - XmlEruby.escape_xml() is moved to XmlHelper.escape_xml() + enhancements: + - multi programming language support (Ruby/PHP/C/Java/Scheme/Perl/Javascript) + - class Eruby runs very fast because FastEnhancer module is integrated into Eruby by default + - TinyEruby class (tiny.rb) is added + - module ArrayBufferEnhancer added + - module ArrayEnhancer added + - module BiPatternEnhancer added + - module EscapeEnhancer added + - module HeaderFooterEnhancer added + - module NoTextEnhancer added + - module PercentLineEnhancer added + - module PrintEnabledEnhancer added + - module PrintOutEnhancer added + - module SimplifyEnhancer added + - module StringBufferEnhancer added + - module StringIOEnhancer added + - command-line option '-b' (body only) added + - command-line option '-e' (escape) added + - command-line option '-l' (lang) added + - command-line option '-E' (enhancer) added + - command-line option '-I' (require path) added + - command-line option '-K' (kanji code) added + - command-line option '-S' (string to symbol) added + - command-line option '-B' (call result(binding())) added + + +# +- release: 1.1.0 + date: 2006-03-05 + enhancements: + - '<%# ... %>' is supported + - PrintEnhancer, PrintEruby, and PrintXmlEruby added + +- release: 1.0.1 + date: 2006-02-01 + bugfixes: + - bin/erubis is available with RubyGems + + +# +- release: 1.0.0 + date: 2006-02-01 + bugfixes: + - first release + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/MIT-LICENSE b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/MIT-LICENSE new file mode 100644 index 0000000..c0e8bda --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/MIT-LICENSE @@ -0,0 +1,20 @@ +copyright(c) 2006-2011 kuwata-lab.com all rights reserved. + +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. diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/README.txt b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/README.txt new file mode 100644 index 0000000..2197948 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/README.txt @@ -0,0 +1,102 @@ += README + +release:: 2.7.0 +copyright:: copyright(c) 2006-2011 kuwata-lab.com all rights reserved. + + + +== About Erubis + +Erubis is an implementation of eRuby. It has the following features. +* Very fast, almost three times faster than ERB and even 10% faster than eruby +* Multi-language support (Ruby/PHP/C/Java/Scheme/Perl/Javascript) +* Auto escaping support +* Auto trimming spaces around '<% %>' +* Embedded pattern changeable (default '<% %>') +* Enable to handle Processing Instructions (PI) as embedded pattern (ex. '') +* Context object available and easy to combine eRuby template with YAML datafile +* Print statement available +* Easy to extend and customize in subclass +* Ruby on Rails support + +Erubis is implemented in pure Ruby. It requires Ruby 1.8 or higher. +Erubis now supports Ruby 1.9. + +See doc/users-guide.html for details. + + + +== Installation + +* If you have installed RubyGems, just type gem install erubis. + + $ sudo gem install erubis + +* Else install abstract[http://rubyforge.org/projects/abstract/] at first, + and download erubis_X.X.X.tar.bz2 and install it by setup.rb. + + $ tar xjf abstract_X.X.X.tar.bz2 + $ cd abstract_X.X.X/ + $ sudo ruby setup.rb + $ cd .. + $ tar xjf erubis_X.X.X.tar.bz2 + $ cd erubis_X.X.X/ + $ sudo ruby setup.rb + +* (Optional) It is able to merge 'lib/**/*.rb' into 'bin/erubis' by + 'contrib/inline-require' script. + + $ tar xjf erubis_X.X.X.tar.bz2 + $ cd erubis_X.X.X/ + $ cp /tmp/abstract_X.X.X/lib/abstract.rb lib + $ unset RUBYLIB + $ contrib/inline-require -I lib bin/erubis > contrib/erubis + + + +== Ruby on Rails Support + +Erubis supports Ruby on Rails. +All you have to do is to add the following code into your 'config/environment.rb' +and restart web server. + + require 'erubis/helpers/rails_helper' + #Erubis::Helpers::RailsHelper.engine_class = Erubis::Eruby + #Erubis::Helpers::RailsHelper.init_properties = {} + #Erubis::Helpers::RailsHelper.show_src = nil + +If Erubis::Helpers::RailsHelper.show_src is ture, Erubis prints converted Ruby code +into log file ('log/development.log' or so). It is useful for debug. + + + +== Exploring Guide + +If you are exploring Eruby, see the following class at first. +* Erubis::TinyEruby (erubis/tiny.rb) -- + the most simple eRuby implementation. +* Erubis::Engine (erubis/engine.rb) -- + base class of Eruby, Ephp, Ejava, and so on. +* Erubis::Eruby (erubis/engine/eruby.rb) -- + engine class for eRuby. +* Erubis::Converter (erubis/converter.rb) -- + convert eRuby script into Ruby code. + + + +== Benchmark + +'benchmark/erubybenchmark.rb' is a benchmark script of Erubis. +Try 'ruby erubybenchmark.rb' in benchmark directory. + + + +== License + +MIT License + + + +== Author + +makoto kuwata diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/Makefile b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/Makefile new file mode 100644 index 0000000..fa740fe --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/Makefile @@ -0,0 +1,6 @@ + +bench: + ruby bench.rb -n 10000 + +clean: + rm -rf bench_*.rhtml* diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/bench.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/bench.rb new file mode 100644 index 0000000..85ceb16 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/bench.rb @@ -0,0 +1,313 @@ +#!/usr/bin/env ruby + +### +### $Release: 2.7.0 $ +### copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +### + +require 'erb' +require 'erubis' +require 'erubis/tiny' +require 'erubis/engine/enhanced' +require 'yaml' +require 'cgi' +include ERB::Util + +begin + require 'eruby' +rescue LoadError + ERuby = nil +end + +def File.write(filename, content) + File.open(filename, 'w') { |f| f.write(content) } +end + + +## change benchmark library to use $stderr instead of $stdout +require 'benchmark' +module Benchmark + class Report + def print(*args) + $stderr.print(*args) + end + end + module_function + def print(*args) + $stderr.print(*args) + end +end + + +class BenchmarkApplication + + TARGETS = %w[eruby + ERB ERB(cached) + Erubis::Eruby Erubis::Eruby(cached) + Erubis::FastEruby Erubis::FastEruby(cached) + Erubis::TinyEruby + Erubis::ArrayBufferEruby + Erubis::PrintOutEruby + Erubis::StdoutEruby + ] + + def initialize(ntimes, context, targets=nil, params={}) + @ntimes = ntimes + @context = context + @targets = targets && !targets.empty? ? targets : TARGETS.dup + @testmode = params[:testmode] || 'execute' + @erubyfile = params[:erubyfile] || 'erubybench.rhtml' + @printout = params[:printout] || false + end + + attr_accessor :ntimes, :targets + attr_accessor :testmode, :erubyfile, :contextfile, :printout + + def context2code(context, varname='context') + s = '' + context.each { |k, | s << "#{k} = #{varname}[#{k.inspect}]; " } + return s + end + + def perform_benchmark + width = 30 + $stderr.puts "*** ntimes=#{@ntimes}, testmode=#{@testmode}" + Benchmark.bm(width) do |job| + for target in @targets do + method = "#{@testmode}_#{target.gsub(/::|-|\(/, '_').gsub(/\)/, '').downcase}" + #$stderr.puts "*** debug: method=#{method.inspect}" + next unless self.respond_to?(method) + filename = "bench_#{(target =~ /^(\w+)/) && $1.downcase}.rhtml" + title = target + output = nil + job.report(title) do + output = self.__send__(method, filename, @context) + end + File.write("output.#{target.gsub(/[^\w]/,'')}", output) if @printout && output && !output.empty? + end + end + end + + ## + + def execute_eruby(filename, context) + return unless ERuby + #eval context2code(context) + list = context['list'] + @ntimes.times do + ERuby.import(filename) + end + return nil + end + + def execute_erb(filename, context) + #eval context2code(context) + list = context['list'] + output = nil + @ntimes.times do + eruby = ERB.new(File.read(filename)) + output = eruby.result(binding()) + print output + end + return output + end + + def execute_erb_cached(filename, context) + #eval context2code(context) + list = context['list'] + output = nil + cachefile = filename + '.cache' + File.unlink(cachefile) if test(?f, cachefile) + @ntimes.times do + if !test(?f, cachefile) || File.mtime(filename) > File.mtime(cachefile) + eruby = ERB.new(File.read(filename)) + File.write(cachefile, eruby.src) + else + eruby = ERB.new('') + #eruby.src = File.read(cachefile) + eruby.instance_variable_set("@src", File.read(cachefile)) + end + output = eruby.result(binding()) + print output + end + return output + end + + ## no cached + for klass in %w[Eruby FastEruby TinyEruby ArrayBufferEruby PrintOutEruby StdoutEruby] do + s = <<-END + def execute_erubis_#{klass.downcase}(filename, context) + #eval context2code(context) + list = context['list'] + output = nil + @ntimes.times do + eruby = Erubis::#{klass}.new(File.read(filename)) + output = eruby.result(binding()) + print output + end + return output + end + END + eval s + end + + ## cached + for klass in %w[Eruby FastEruby] do + s = <<-END + def execute_erubis_#{klass.downcase}_cached(filename, context) + #eval context2code(context) + list = context['list'] + cachefile = filename + '.cache' + File.unlink(cachefile) if test(?f, cachefile) + output = nil + @ntimes.times do + eruby = Erubis::#{klass}.load_file(filename) + output = eruby.result(binding()) + print output + end + savefile = cachefile.sub(/\\.cache$/, '.#{klass.downcase}.cache') + File.rename(cachefile, savefile) + return output + end + END + eval s + end + + ## + + def convert_eruby(filename, context) + return unless ERuby + #eval context2code(context) + list = context['list'] + output = nil + @ntimes.times do + output = ERuby::Compiler.new.compile_string(File.read(filename)) + end + return output + end + + def convert_erb(filename, context) + #eval context2code(context) + list = context['list'] + output = nil + @ntimes.times do + eruby = ERB.new(File.read(filename)) + output = eruby.src + end + return output + end + + for klass in %w[Eruby FastEruby TinyEruby] + s = <<-END + def convert_erubis_#{klass.downcase}(filename, context) + #eval context2code(context) + list = context['list'] + output = nil + @ntimes.times do + eruby = Erubis::#{klass}.new(File.read(filename)) + output = eruby.src + end + return output + end + END + eval s + end + +end + + +require 'optparse' + +class MainApplication + + def parse_argv(argv=ARGV) + optparser = OptionParser.new + options = {} + ['-h', '-n N', '-t erubyfile', '-f contextfile', '-A', '-e', + '-x exclude', '-m testmode', '-X', '-p', '-D'].each do |opt| + optparser.on(opt) { |val| options[opt[1].chr] = val } + end + begin + targets = optparser.parse!(argv) + rescue => ex + $stderr.puts "#{@script}: #{ex.to_s}" + exit(1) + end + return options, targets + end + + def execute + @script = File.basename($0) + ntimes = 1000 + targets = BenchmarkApplication::TARGETS.dup + testmode = 'execute' + contextfile = 'bench_context.yaml' + # + options, args = parse_argv(ARGV) + ntimes = options['n'].to_i if options['n'] + targets = args if args && !args.empty? + targets = targets - options['x'].split(/,/) if options['x'] + testmode = options['m'] if options['m'] + contextfile = options['f'] if options['f'] + erubyfile = options['t'] if options['t'] + # + if options['h'] + $stderr.puts "Usage: ruby #{@script} [..options..] [..targets..]" + $stderr.puts " -h : help" + $stderr.puts " -n N : loop N times" + $stderr.puts " -f datafile : context data filename (*.yaml)" + $stderr.puts " -x exclude : exclude target name" + $stdout.puts " -m testmode : 'execute' or 'convert' (default 'execute')" + $stderr.puts " -p : print output to file (filename: 'output.TARGETNAME')" + return + end + # + #if ! options['t'] + for item in %w[eruby erb erubis] + fname = "bench_#{item}.rhtml" + header = File.read("templates/_header.html") + #body = File.read("templates/#{erubyfile}") + body = File.read("templates/#{fname}") + footer = File.read("templates/_footer.html") + content = header + body + footer + File.write(fname, content) + end + # + if options['e'] # escape + tuples = [ + [ 'bench_eruby.rhtml', '<%= CGI.escapeHTML((\1).to_s) %>' ], + [ 'bench_erb.rhtml', '<%=h \1 %>' ], + [ 'bench_erubis.rhtml', '<%== \1 %>' ], + ] + for fname, replace in tuples + content = File.read(fname).gsub(/<%= ?(.*?) ?%>/, replace) + File.write(fname, content) + end + targets.delete('Erubis::TinyEruby') ## because TinyEruby doesn't support '<%== =>' + end + # + context = YAML.load_file(contextfile) + # + params = { + :printout=>options['p'], + :testmode=>testmode, + } + app = BenchmarkApplication.new(ntimes, context, targets, params) + app.perform_benchmark() + end + +end + + +if __FILE__ == $0 + + ## open /dev/null + $stdout = File.open('/dev/null', 'w') + at_exit do + $stdout.close() + end + + ## start benchmark + MainApplication.new().execute() + +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/bench_context.yaml b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/bench_context.yaml new file mode 100644 index 0000000..e0ab4e8 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/bench_context.yaml @@ -0,0 +1,141 @@ +list: + - name: Adobe Systems + name2: Adobe Systems Inc. + url: http://www.adobe.com + symbol: ADBE + price: 39.26 + change: 0.13 + ratio: 0.33 + - name: Advanced Micro Devices + name2: Advanced Micro Devices Inc. + url: http://www.amd.com + symbol: AMD + price: 16.22 + change: 0.17 + ratio: 1.06 + - name: Amazon.com + name2: Amazon.com Inc + url: http://www.amazon.com + symbol: AMZN + price: 36.85 + change: -0.23 + ratio: -0.62 + - name: Apple + name2: Apple Inc. + url: http://www.apple.com + symbol: AAPL + price: 85.38 + change: -0.87 + ratio: -1.01 + - name: BEA Systems + name2: BEA Systems Inc. + url: http://www.bea.com + symbol: BEAS + price: 12.46 + change: 0.09 + ratio: 0.73 + - name: CA + name2: CA, Inc. + url: http://www.ca.com + symbol: CA + price: 24.66 + change: 0.38 + ratio: 1.57 + - name: Cisco Systems + name2: Cisco Systems Inc. + url: http://www.cisco.com + symbol: CSCO + price: 26.35 + change: 0.13 + ratio: 0.5 + - name: Dell + name2: Dell Corp. + url: http://www.dell.com/ + symbol: DELL + price: 23.73 + change: -0.42 + ratio: -1.74 + - name: eBay + name2: eBay Inc. + url: http://www.ebay.com + symbol: EBAY + price: 31.65 + change: -0.8 + ratio: -2.47 + - name: Google + name2: Google Inc. + url: http://www.google.com + symbol: GOOG + price: 495.84 + change: 7.75 + ratio: 1.59 + - name: Hewlett-Packard + name2: Hewlett-Packard Co. + url: http://www.hp.com + symbol: HPQ + price: 41.69 + change: -0.02 + ratio: -0.05 + - name: IBM + name2: International Business Machines Corp. + url: http://www.ibm.com + symbol: IBM + price: 97.45 + change: -0.06 + ratio: -0.06 + - name: Intel + name2: Intel Corp. + url: http://www.intel.com + symbol: INTC + price: 20.53 + change: -0.07 + ratio: -0.34 + - name: Juniper Networks + name2: Juniper Networks, Inc + url: http://www.juniper.net/ + symbol: JNPR + price: 18.96 + change: 0.5 + ratio: 2.71 + - name: Microsoft + name2: Microsoft Corp + url: http://www.microsoft.com + symbol: MSFT + price: 30.6 + change: 0.15 + ratio: 0.49 + - name: Oracle + name2: Oracle Corp. + url: http://www.oracle.com + symbol: ORCL + price: 17.15 + change: 0.17 + ratio: 1.0 + - name: SAP + name2: SAP AG + url: http://www.sap.com + symbol: SAP + price: 46.2 + change: -0.16 + ratio: -0.35 + - name: Seagate Technology + name2: Seagate Technology + url: http://www.seagate.com/ + symbol: STX + price: 27.35 + change: -0.36 + ratio: -1.3 + - name: Sun Microsystems + name2: Sun Microsystems Inc. + url: http://www.sun.com + symbol: SUNW + price: 6.33 + change: -0.01 + ratio: -0.16 + - name: Yahoo + name2: Yahoo! Inc. + url: http://www.yahoo.com + symbol: YHOO + price: 28.04 + change: -0.17 + ratio: -0.6 diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/_footer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/_footer.html new file mode 100644 index 0000000..3ae6d4d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/_footer.html @@ -0,0 +1,4 @@ + + + + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/_header.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/_header.html new file mode 100644 index 0000000..cbab956 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/_header.html @@ -0,0 +1,52 @@ + + + + + Stock Prices + + + + + + + + + + + + +

    Stock Prices

    + + + + + + + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/bench_erb.rhtml b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/bench_erb.rhtml new file mode 100644 index 0000000..3dde9d5 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/bench_erb.rhtml @@ -0,0 +1,29 @@ + +<% +n = 0 +for item in list + n += 1 + %> + + + + + +<% if item['change'] < 0.0 %> + + +<% else %> + + +<% end %> + +<% +end + %> + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/bench_erubis.rhtml b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/bench_erubis.rhtml new file mode 100644 index 0000000..3dde9d5 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/bench_erubis.rhtml @@ -0,0 +1,29 @@ + +<% +n = 0 +for item in list + n += 1 + %> + + + + + +<% if item['change'] < 0.0 %> + + +<% else %> + + +<% end %> + +<% +end + %> + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/bench_eruby.rhtml b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/bench_eruby.rhtml new file mode 100644 index 0000000..3dde9d5 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/bench_eruby.rhtml @@ -0,0 +1,29 @@ + +<% +n = 0 +for item in list + n += 1 + %> + + + + + +<% if item['change'] < 0.0 %> + + +<% else %> + + +<% end %> + +<% +end + %> + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/bin/erubis b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/bin/erubis new file mode 100755 index 0000000..5a9fccf --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/bin/erubis @@ -0,0 +1,10 @@ +#!/usr/bin/env ruby + +### +### $Release: 2.7.0 $ +### copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +### + +require 'erubis/main' + +Erubis::Main.main(ARGV) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/contrib/erubis b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/contrib/erubis new file mode 100755 index 0000000..96385d3 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/contrib/erubis @@ -0,0 +1,3468 @@ +#!/usr/bin/env ruby + +### +### $Release: 2.7.0 $ +### copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +### + +#--begin of require 'erubis/main' +### +### $Release: 2.7.0 $ +### copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +### + +require 'yaml' +#--begin of require 'erubis' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +## +## an implementation of eRuby +## +## ex. +## input = <<'END' +##
      +## <% for item in @list %> +##
    • <%= item %> +## <%== item %>
    • +## <% end %> +##
    +## END +## list = ['', 'b&b', '"ccc"'] +## eruby = Erubis::Eruby.new(input) +## puts "--- code ---" +## puts eruby.src +## puts "--- result ---" +## context = Erubis::Context.new() # or new(:list=>list) +## context[:list] = list +## puts eruby.evaluate(context) +## +## result: +## --- source --- +## _buf = ''; _buf << '
      +## '; for item in @list +## _buf << '
    • '; _buf << ( item ).to_s; _buf << ' +## '; _buf << ' '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '
    • +## '; end +## _buf << '
    +## '; +## _buf.to_s +## --- result --- +##
      +##
    • +## <aaa>
    • +##
    • b&b +## b&b
    • +##
    • "ccc" +## "ccc"
    • +##
    +## + + +module Erubis + VERSION = ('$Release: 2.7.0 $' =~ /([.\d]+)/) && $1 +end + +#--begin of require 'erubis/engine' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + + +#--begin of require 'erubis/generator' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +#--begin of require 'erubis/util' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +module Kernel + + ## + ## raise NotImplementedError + ## + def not_implemented #:doc: + backtrace = caller() + method_name = (backtrace.shift =~ /`(\w+)'$/) && $1 + mesg = "class #{self.class.name} must implement abstract method '#{method_name}()'." + #mesg = "#{self.class.name}##{method_name}() is not implemented." + err = NotImplementedError.new mesg + err.set_backtrace backtrace + raise err + end + private :not_implemented + +end +#--end of require 'erubis/util' + +module Erubis + + + ## + ## code generator, called by Converter module + ## + module Generator + + def self.supported_properties() # :nodoc: + return [ + [:escapefunc, nil, "escape function name"], + ] + end + + attr_accessor :escapefunc + + def init_generator(properties={}) + @escapefunc = properties[:escapefunc] + end + + + ## (abstract) escape text string + ## + ## ex. + ## def escape_text(text) + ## return text.dump + ## # or return "'" + text.gsub(/['\\]/, '\\\\\&') + "'" + ## end + def escape_text(text) + not_implemented + end + + ## return escaped expression code (ex. 'h(...)' or 'htmlspecialchars(...)') + def escaped_expr(code) + code.strip! + return "#{@escapefunc}(#{code})" + end + + ## (abstract) add @preamble to src + def add_preamble(src) + not_implemented + end + + ## (abstract) add text string to src + def add_text(src, text) + not_implemented + end + + ## (abstract) add statement code to src + def add_stmt(src, code) + not_implemented + end + + ## (abstract) add expression literal code to src. this is called by add_expr(). + def add_expr_literal(src, code) + not_implemented + end + + ## (abstract) add escaped expression code to src. this is called by add_expr(). + def add_expr_escaped(src, code) + not_implemented + end + + ## (abstract) add expression code to src for debug. this is called by add_expr(). + def add_expr_debug(src, code) + not_implemented + end + + ## (abstract) add @postamble to src + def add_postamble(src) + not_implemented + end + + + end + + +end +#--end of require 'erubis/generator' +#--begin of require 'erubis/converter' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +#--already included require 'erubis/util' + +module Erubis + + + ## + ## convert + ## + module Converter + + attr_accessor :preamble, :postamble, :escape + + def self.supported_properties # :nodoc: + return [ + [:preamble, nil, "preamble (no preamble when false)"], + [:postamble, nil, "postamble (no postamble when false)"], + [:escape, nil, "escape expression or not in default"], + ] + end + + def init_converter(properties={}) + @preamble = properties[:preamble] + @postamble = properties[:postamble] + @escape = properties[:escape] + end + + ## convert input string into target language + def convert(input) + codebuf = "" # or [] + @preamble.nil? ? add_preamble(codebuf) : (@preamble && (codebuf << @preamble)) + convert_input(codebuf, input) + @postamble.nil? ? add_postamble(codebuf) : (@postamble && (codebuf << @postamble)) + @_proc = nil # clear cached proc object + return codebuf # or codebuf.join() + end + + protected + + ## + ## detect spaces at beginning of line + ## + def detect_spaces_at_bol(text, is_bol) + lspace = nil + if text.empty? + lspace = "" if is_bol + elsif text[-1] == ?\n + lspace = "" + else + rindex = text.rindex(?\n) + if rindex + s = text[rindex+1..-1] + if s =~ /\A[ \t]*\z/ + lspace = s + #text = text[0..rindex] + text[rindex+1..-1] = '' + end + else + if is_bol && text =~ /\A[ \t]*\z/ + #lspace = text + #text = nil + lspace = text.dup + text[0..-1] = '' + end + end + end + return lspace + end + + ## + ## (abstract) convert input to code + ## + def convert_input(codebuf, input) + not_implemented + end + + end + + + module Basic + end + + + ## + ## basic converter which supports '<% ... %>' notation. + ## + module Basic::Converter + include Erubis::Converter + + def self.supported_properties # :nodoc: + return [ + [:pattern, '<% %>', "embed pattern"], + [:trim, true, "trim spaces around <% ... %>"], + ] + end + + attr_accessor :pattern, :trim + + def init_converter(properties={}) + super(properties) + @pattern = properties[:pattern] + @trim = properties[:trim] != false + end + + protected + + ## return regexp of pattern to parse eRuby script + def pattern_regexp(pattern) + @prefix, @postfix = pattern.split() # '<% %>' => '<%', '%>' + #return /(.*?)(^[ \t]*)?#{@prefix}(=+|\#)?(.*?)-?#{@postfix}([ \t]*\r?\n)?/m + #return /(^[ \t]*)?#{@prefix}(=+|\#)?(.*?)-?#{@postfix}([ \t]*\r?\n)?/m + return /#{@prefix}(=+|-|\#|%)?(.*?)([-=])?#{@postfix}([ \t]*\r?\n)?/m + end + module_function :pattern_regexp + + #DEFAULT_REGEXP = /(.*?)(^[ \t]*)?<%(=+|\#)?(.*?)-?%>([ \t]*\r?\n)?/m + #DEFAULT_REGEXP = /(^[ \t]*)?<%(=+|\#)?(.*?)-?%>([ \t]*\r?\n)?/m + #DEFAULT_REGEXP = /<%(=+|\#)?(.*?)-?%>([ \t]*\r?\n)?/m + DEFAULT_REGEXP = pattern_regexp('<% %>') + + public + + def convert_input(src, input) + pat = @pattern + regexp = pat.nil? || pat == '<% %>' ? DEFAULT_REGEXP : pattern_regexp(pat) + pos = 0 + is_bol = true # is beginning of line + input.scan(regexp) do |indicator, code, tailch, rspace| + match = Regexp.last_match() + len = match.begin(0) - pos + text = input[pos, len] + pos = match.end(0) + ch = indicator ? indicator[0] : nil + lspace = ch == ?= ? nil : detect_spaces_at_bol(text, is_bol) + is_bol = rspace ? true : false + add_text(src, text) if text && !text.empty? + ## * when '<%= %>', do nothing + ## * when '<% %>' or '<%# %>', delete spaces iff only spaces are around '<% %>' + if ch == ?= # <%= %> + rspace = nil if tailch && !tailch.empty? + add_text(src, lspace) if lspace + add_expr(src, code, indicator) + add_text(src, rspace) if rspace + elsif ch == ?\# # <%# %> + n = code.count("\n") + (rspace ? 1 : 0) + if @trim && lspace && rspace + add_stmt(src, "\n" * n) + else + add_text(src, lspace) if lspace + add_stmt(src, "\n" * n) + add_text(src, rspace) if rspace + end + elsif ch == ?% # <%% %> + s = "#{lspace}#{@prefix||='<%'}#{code}#{tailch}#{@postfix||='%>'}#{rspace}" + add_text(src, s) + else # <% %> + if @trim && lspace && rspace + add_stmt(src, "#{lspace}#{code}#{rspace}") + else + add_text(src, lspace) if lspace + add_stmt(src, code) + add_text(src, rspace) if rspace + end + end + end + #rest = $' || input # ruby1.8 + rest = pos == 0 ? input : input[pos..-1] # ruby1.9 + add_text(src, rest) + end + + ## add expression code to src + def add_expr(src, code, indicator) + case indicator + when '=' + @escape ? add_expr_escaped(src, code) : add_expr_literal(src, code) + when '==' + @escape ? add_expr_literal(src, code) : add_expr_escaped(src, code) + when '===' + add_expr_debug(src, code) + end + end + + end + + + module PI + end + + ## + ## Processing Instructions (PI) converter for XML. + ## this class converts '' and '${...}' notation. + ## + module PI::Converter + include Erubis::Converter + + def self.desc # :nodoc: + "use processing instructions (PI) instead of '<% %>'" + end + + def self.supported_properties # :nodoc: + return [ + [:trim, true, "trim spaces around <% ... %>"], + [:pi, 'rb', "PI (Processing Instrunctions) name"], + [:embchar, '@', "char for embedded expression pattern('@{...}@')"], + [:pattern, '<% %>', "embed pattern"], + ] + end + + attr_accessor :pi, :prefix + + def init_converter(properties={}) + super(properties) + @trim = properties.fetch(:trim, true) + @pi = properties[:pi] if properties[:pi] + @embchar = properties[:embchar] || '@' + @pattern = properties[:pattern] + @pattern = '<% %>' if @pattern.nil? #|| @pattern == true + end + + def convert(input) + code = super(input) + return @header || @footer ? "#{@header}#{code}#{@footer}" : code + end + + protected + + def convert_input(codebuf, input) + unless @regexp + @pi ||= 'e' + ch = Regexp.escape(@embchar) + if @pattern + left, right = @pattern.split(' ') + @regexp = /<\?#{@pi}(?:-(\w+))?(\s.*?)\?>([ \t]*\r?\n)?|#{ch}(!*)?\{(.*?)\}#{ch}|#{left}(=+)(.*?)#{right}/m + else + @regexp = /<\?#{@pi}(?:-(\w+))?(\s.*?)\?>([ \t]*\r?\n)?|#{ch}(!*)?\{(.*?)\}#{ch}/m + end + end + # + is_bol = true + pos = 0 + input.scan(@regexp) do |pi_arg, stmt, rspace, + indicator1, expr1, indicator2, expr2| + match = Regexp.last_match + len = match.begin(0) - pos + text = input[pos, len] + pos = match.end(0) + lspace = stmt ? detect_spaces_at_bol(text, is_bol) : nil + is_bol = stmt && rspace ? true : false + add_text(codebuf, text) # unless text.empty? + # + if stmt + if @trim && lspace && rspace + add_pi_stmt(codebuf, "#{lspace}#{stmt}#{rspace}", pi_arg) + else + add_text(codebuf, lspace) if lspace + add_pi_stmt(codebuf, stmt, pi_arg) + add_text(codebuf, rspace) if rspace + end + else + add_pi_expr(codebuf, expr1 || expr2, indicator1 || indicator2) + end + end + #rest = $' || input # ruby1.8 + rest = pos == 0 ? input : input[pos..-1] # ruby1.9 + add_text(codebuf, rest) + end + + #-- + #def convert_input(codebuf, input) + # parse_stmts(codebuf, input) + # #parse_stmts2(codebuf, input) + #end + # + #def parse_stmts(codebuf, input) + # #regexp = pattern_regexp(@pattern) + # @pi ||= 'e' + # @stmt_pattern ||= /<\?#{@pi}(?:-(\w+))?(\s.*?)\?>([ \t]*\r?\n)?/m + # is_bol = true + # pos = 0 + # input.scan(@stmt_pattern) do |pi_arg, code, rspace| + # match = Regexp.last_match + # len = match.begin(0) - pos + # text = input[pos, len] + # pos = match.end(0) + # lspace = detect_spaces_at_bol(text, is_bol) + # is_bol = rspace ? true : false + # parse_exprs(codebuf, text) # unless text.empty? + # if @trim && lspace && rspace + # add_pi_stmt(codebuf, "#{lspace}#{code}#{rspace}", pi_arg) + # else + # add_text(codebuf, lspace) + # add_pi_stmt(codebuf, code, pi_arg) + # add_text(codebuf, rspace) + # end + # end + # rest = $' || input + # parse_exprs(codebuf, rest) + #end + # + #def parse_exprs(codebuf, input) + # unless @expr_pattern + # ch = Regexp.escape(@embchar) + # if @pattern + # left, right = @pattern.split(' ') + # @expr_pattern = /#{ch}(!*)?\{(.*?)\}#{ch}|#{left}(=+)(.*?)#{right}/ + # else + # @expr_pattern = /#{ch}(!*)?\{(.*?)\}#{ch}/ + # end + # end + # pos = 0 + # input.scan(@expr_pattern) do |indicator1, code1, indicator2, code2| + # indicator = indicator1 || indicator2 + # code = code1 || code2 + # match = Regexp.last_match + # len = match.begin(0) - pos + # text = input[pos, len] + # pos = match.end(0) + # add_text(codebuf, text) # unless text.empty? + # add_pi_expr(codebuf, code, indicator) + # end + # rest = $' || input + # add_text(codebuf, rest) + #end + #++ + + def add_pi_stmt(codebuf, code, pi_arg) # :nodoc: + case pi_arg + when nil ; add_stmt(codebuf, code) + when 'header' ; @header = code + when 'footer' ; @footer = code + when 'comment'; add_stmt(codebuf, "\n" * code.count("\n")) + when 'value' ; add_expr_literal(codebuf, code) + else ; add_stmt(codebuf, code) + end + end + + def add_pi_expr(codebuf, code, indicator) # :nodoc: + case indicator + when nil, '', '==' # @{...}@ or <%== ... %> + @escape == false ? add_expr_literal(codebuf, code) : add_expr_escaped(codebuf, code) + when '!', '=' # @!{...}@ or <%= ... %> + @escape == false ? add_expr_escaped(codebuf, code) : add_expr_literal(codebuf, code) + when '!!', '===' # @!!{...}@ or <%=== ... %> + add_expr_debug(codebuf, code) + else + # ignore + end + end + + end + + +end +#--end of require 'erubis/converter' +#--begin of require 'erubis/evaluator' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +#--begin of require 'erubis/error' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +module Erubis + + + ## + ## base error class + ## + class ErubisError < StandardError + end + + + ## + ## raised when method or function is not supported + ## + class NotSupportedError < ErubisError + end + + +end +#--end of require 'erubis/error' +#--begin of require 'erubis/context' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + + +module Erubis + + + ## + ## context object for Engine#evaluate + ## + ## ex. + ## template = <<'END' + ## Hello <%= @user %>! + ## <% for item in @list %> + ## - <%= item %> + ## <% end %> + ## END + ## + ## context = Erubis::Context.new(:user=>'World', :list=>['a','b','c']) + ## # or + ## # context = Erubis::Context.new + ## # context[:user] = 'World' + ## # context[:list] = ['a', 'b', 'c'] + ## + ## eruby = Erubis::Eruby.new(template) + ## print eruby.evaluate(context) + ## + class Context + include Enumerable + + def initialize(hash=nil) + hash.each do |name, value| + self[name] = value + end if hash + end + + def [](key) + return instance_variable_get("@#{key}") + end + + def []=(key, value) + return instance_variable_set("@#{key}", value) + end + + def keys + return instance_variables.collect { |name| name[1..-1] } + end + + def each + instance_variables.each do |name| + key = name[1..-1] + value = instance_variable_get(name) + yield(key, value) + end + end + + def to_hash + hash = {} + self.keys.each { |key| hash[key] = self[key] } + return hash + end + + def update(context_or_hash) + arg = context_or_hash + if arg.is_a?(Hash) + arg.each do |key, val| + self[key] = val + end + else + arg.instance_variables.each do |varname| + key = varname[1..-1] + val = arg.instance_variable_get(varname) + self[key] = val + end + end + end + + end + + +end +#--end of require 'erubis/context' + + +module Erubis + + EMPTY_BINDING = binding() + + + ## + ## evaluate code + ## + module Evaluator + + def self.supported_properties # :nodoc: + return [] + end + + attr_accessor :src, :filename + + def init_evaluator(properties) + @filename = properties[:filename] + end + + def result(*args) + raise NotSupportedError.new("evaluation of code except Ruby is not supported.") + end + + def evaluate(*args) + raise NotSupportedError.new("evaluation of code except Ruby is not supported.") + end + + end + + + ## + ## evaluator for Ruby + ## + module RubyEvaluator + include Evaluator + + def self.supported_properties # :nodoc: + list = Evaluator.supported_properties + return list + end + + ## eval(@src) with binding object + def result(_binding_or_hash=TOPLEVEL_BINDING) + _arg = _binding_or_hash + if _arg.is_a?(Hash) + _b = binding() + eval _arg.collect{|k,v| "#{k} = _arg[#{k.inspect}]; "}.join, _b + elsif _arg.is_a?(Binding) + _b = _arg + elsif _arg.nil? + _b = binding() + else + raise ArgumentError.new("#{self.class.name}#result(): argument should be Binding or Hash but passed #{_arg.class.name} object.") + end + return eval(@src, _b, (@filename || '(erubis')) + end + + ## invoke context.instance_eval(@src) + def evaluate(_context=Context.new) + _context = Context.new(_context) if _context.is_a?(Hash) + #return _context.instance_eval(@src, @filename || '(erubis)') + #@_proc ||= eval("proc { #{@src} }", Erubis::EMPTY_BINDING, @filename || '(erubis)') + @_proc ||= eval("proc { #{@src} }", binding(), @filename || '(erubis)') + return _context.instance_eval(&@_proc) + end + + ## if object is an Class or Module then define instance method to it, + ## else define singleton method to it. + def def_method(object, method_name, filename=nil) + m = object.is_a?(Module) ? :module_eval : :instance_eval + object.__send__(m, "def #{method_name}; #{@src}; end", filename || @filename || '(erubis)') + end + + + end + + +end +#--end of require 'erubis/evaluator' +#--already included require 'erubis/context' + + +module Erubis + + + ## + ## (abstract) abstract engine class. + ## subclass must include evaluator and converter module. + ## + class Engine + #include Evaluator + #include Converter + #include Generator + + def initialize(input=nil, properties={}) + #@input = input + init_generator(properties) + init_converter(properties) + init_evaluator(properties) + @src = convert(input) if input + end + + + ## + ## convert input string and set it to @src + ## + def convert!(input) + @src = convert(input) + end + + + ## + ## load file, write cache file, and return engine object. + ## this method create code cache file automatically. + ## cachefile name can be specified with properties[:cachename], + ## or filname + 'cache' is used as default. + ## + def self.load_file(filename, properties={}) + cachename = properties[:cachename] || (filename + '.cache') + properties[:filename] = filename + timestamp = File.mtime(filename) + if test(?f, cachename) && timestamp == File.mtime(cachename) + engine = self.new(nil, properties) + engine.src = File.read(cachename) + else + input = File.open(filename, 'rb') {|f| f.read } + engine = self.new(input, properties) + tmpname = cachename + rand().to_s[1,8] + File.open(tmpname, 'wb') {|f| f.write(engine.src) } + File.rename(tmpname, cachename) + File.utime(timestamp, timestamp, cachename) + end + engine.src.untaint # ok? + return engine + end + + + ## + ## helper method to convert and evaluate input text with context object. + ## context may be Binding, Hash, or Object. + ## + def process(input, context=nil, filename=nil) + code = convert(input) + filename ||= '(erubis)' + if context.is_a?(Binding) + return eval(code, context, filename) + else + context = Context.new(context) if context.is_a?(Hash) + return context.instance_eval(code, filename) + end + end + + + ## + ## helper method evaluate Proc object with contect object. + ## context may be Binding, Hash, or Object. + ## + def process_proc(proc_obj, context=nil, filename=nil) + if context.is_a?(Binding) + filename ||= '(erubis)' + return eval(proc_obj, context, filename) + else + context = Context.new(context) if context.is_a?(Hash) + return context.instance_eval(&proc_obj) + end + end + + + end # end of class Engine + + + ## + ## (abstract) base engine class for Eruby, Eperl, Ejava, and so on. + ## subclass must include generator. + ## + class Basic::Engine < Engine + include Evaluator + include Basic::Converter + include Generator + end + + + class PI::Engine < Engine + include Evaluator + include PI::Converter + include Generator + end + + +end +#--end of require 'erubis/engine' +#require 'erubis/generator' +#require 'erubis/converter' +#require 'erubis/evaluator' +#require 'erubis/error' +#require 'erubis/context' +#requier 'erubis/util' +#--begin of require 'erubis/helper' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + + +module Erubis + + ## + ## helper for xml + ## + module XmlHelper + + module_function + + ESCAPE_TABLE = { + '&' => '&', + '<' => '<', + '>' => '>', + '"' => '"', + "'" => ''', + } + + def escape_xml(value) + value.to_s.gsub(/[&<>"]/) { |s| ESCAPE_TABLE[s] } # or /[&<>"']/ + #value.to_s.gsub(/[&<>"]/) { ESCAPE_TABLE[$&] } + end + + def escape_xml2(value) + return value.to_s.gsub(/\&/,'&').gsub(//,'>').gsub(/"/,'"') + end + + alias h escape_xml + alias html_escape escape_xml + + def url_encode(str) + return str.gsub(/[^-_.a-zA-Z0-9]+/) { |s| + s.unpack('C*').collect { |i| "%%%02X" % i }.join + } + end + + alias u url_encode + + end + + +end +#--end of require 'erubis/helper' +#--begin of require 'erubis/enhancer' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + + +module Erubis + + + ## + ## switch '<%= ... %>' to escaped and '<%== ... %>' to unescaped + ## + ## ex. + ## class XmlEruby < Eruby + ## include EscapeEnhancer + ## end + ## + ## this is language-indenedent. + ## + module EscapeEnhancer + + def self.desc # :nodoc: + "switch '<%= %>' to escaped and '<%== %>' to unescaped" + end + + #-- + #def self.included(klass) + # klass.class_eval <<-END + # alias _add_expr_literal add_expr_literal + # alias _add_expr_escaped add_expr_escaped + # alias add_expr_literal _add_expr_escaped + # alias add_expr_escaped _add_expr_literal + # END + #end + #++ + + def add_expr(src, code, indicator) + case indicator + when '=' + @escape ? add_expr_literal(src, code) : add_expr_escaped(src, code) + when '==' + @escape ? add_expr_escaped(src, code) : add_expr_literal(src, code) + when '===' + add_expr_debug(src, code) + end + end + + end + + + #-- + ## (obsolete) + #module FastEnhancer + #end + #++ + + + ## + ## use $stdout instead of string + ## + ## this is only for Eruby. + ## + module StdoutEnhancer + + def self.desc # :nodoc: + "use $stdout instead of array buffer or string buffer" + end + + def add_preamble(src) + src << "#{@bufvar} = $stdout;" + end + + def add_postamble(src) + src << "\n''\n" + end + + end + + + ## + ## use print statement instead of '_buf << ...' + ## + ## this is only for Eruby. + ## + module PrintOutEnhancer + + def self.desc # :nodoc: + "use print statement instead of '_buf << ...'" + end + + def add_preamble(src) + end + + def add_text(src, text) + src << " print '#{escape_text(text)}';" unless text.empty? + end + + def add_expr_literal(src, code) + src << " print((#{code}).to_s);" + end + + def add_expr_escaped(src, code) + src << " print #{escaped_expr(code)};" + end + + def add_postamble(src) + src << "\n" unless src[-1] == ?\n + end + + end + + + ## + ## enable print function + ## + ## Notice: use Eruby#evaluate() and don't use Eruby#result() + ## to be enable print function. + ## + ## this is only for Eruby. + ## + module PrintEnabledEnhancer + + def self.desc # :nodoc: + "enable to use print function in '<% %>'" + end + + def add_preamble(src) + src << "@_buf = " + super + end + + def print(*args) + args.each do |arg| + @_buf << arg.to_s + end + end + + def evaluate(context=nil) + _src = @src + if context.is_a?(Hash) + context.each do |key, val| instance_variable_set("@#{key}", val) end + elsif context + context.instance_variables.each do |name| + instance_variable_set(name, context.instance_variable_get(name)) + end + end + return instance_eval(_src, (@filename || '(erubis)')) + end + + end + + + ## + ## return array instead of string + ## + ## this is only for Eruby. + ## + module ArrayEnhancer + + def self.desc # :nodoc: + "return array instead of string" + end + + def add_preamble(src) + src << "#{@bufvar} = [];" + end + + def add_postamble(src) + src << "\n" unless src[-1] == ?\n + src << "#{@bufvar}\n" + end + + end + + + ## + ## use an Array object as buffer (included in Eruby by default) + ## + ## this is only for Eruby. + ## + module ArrayBufferEnhancer + + def self.desc # :nodoc: + "use an Array object for buffering (included in Eruby class)" + end + + def add_preamble(src) + src << "_buf = [];" + end + + def add_postamble(src) + src << "\n" unless src[-1] == ?\n + src << "_buf.join\n" + end + + end + + + ## + ## use String class for buffering + ## + ## this is only for Eruby. + ## + module StringBufferEnhancer + + def self.desc # :nodoc: + "use a String object for buffering" + end + + def add_preamble(src) + src << "#{@bufvar} = '';" + end + + def add_postamble(src) + src << "\n" unless src[-1] == ?\n + src << "#{@bufvar}.to_s\n" + end + + end + + + ## + ## use StringIO class for buffering + ## + ## this is only for Eruby. + ## + module StringIOEnhancer # :nodoc: + + def self.desc # :nodoc: + "use a StringIO object for buffering" + end + + def add_preamble(src) + src << "#{@bufvar} = StringIO.new;" + end + + def add_postamble(src) + src << "\n" unless src[-1] == ?\n + src << "#{@bufvar}.string\n" + end + + end + + + ## + ## set buffer variable name to '_erbout' as well as '_buf' + ## + ## this is only for Eruby. + ## + module ErboutEnhancer + + def self.desc # :nodoc: + "set '_erbout = _buf = \"\";' to be compatible with ERB." + end + + def add_preamble(src) + src << "_erbout = #{@bufvar} = '';" + end + + def add_postamble(src) + src << "\n" unless src[-1] == ?\n + src << "#{@bufvar}.to_s\n" + end + + end + + + ## + ## remove text and leave code, especially useful when debugging. + ## + ## ex. + ## $ erubis -s -E NoText file.eruby | more + ## + ## this is language independent. + ## + module NoTextEnhancer + + def self.desc # :nodoc: + "remove text and leave code (useful when debugging)" + end + + def add_text(src, text) + src << ("\n" * text.count("\n")) + if text[-1] != ?\n + text =~ /^(.*?)\z/ + src << (' ' * $1.length) + end + end + + end + + + ## + ## remove code and leave text, especially useful when validating HTML tags. + ## + ## ex. + ## $ erubis -s -E NoCode file.eruby | tidy -errors + ## + ## this is language independent. + ## + module NoCodeEnhancer + + def self.desc # :nodoc: + "remove code and leave text (useful when validating HTML)" + end + + def add_preamble(src) + end + + def add_postamble(src) + end + + def add_text(src, text) + src << text + end + + def add_expr(src, code, indicator) + src << "\n" * code.count("\n") + end + + def add_stmt(src, code) + src << "\n" * code.count("\n") + end + + end + + + ## + ## get convert faster, but spaces around '<%...%>' are not trimmed. + ## + ## this is language-independent. + ## + module SimplifyEnhancer + + def self.desc # :nodoc: + "get convert faster but leave spaces around '<% %>'" + end + + #DEFAULT_REGEXP = /(^[ \t]*)?<%(=+|\#)?(.*?)-?%>([ \t]*\r?\n)?/m + SIMPLE_REGEXP = /<%(=+|\#)?(.*?)-?%>/m + + def convert(input) + src = "" + add_preamble(src) + #regexp = pattern_regexp(@pattern) + pos = 0 + input.scan(SIMPLE_REGEXP) do |indicator, code| + match = Regexp.last_match + index = match.begin(0) + text = input[pos, index - pos] + pos = match.end(0) + add_text(src, text) + if !indicator # <% %> + add_stmt(src, code) + elsif indicator[0] == ?\# # <%# %> + n = code.count("\n") + add_stmt(src, "\n" * n) + else # <%= %> + add_expr(src, code, indicator) + end + end + #rest = $' || input # ruby1.8 + rest = pos == 0 ? input : input[pos..-1] # ruby1.9 + add_text(src, rest) + add_postamble(src) + return src + end + + end + + + ## + ## enable to use other embedded expression pattern (default is '\[= =\]'). + ## + ## notice! this is an experimental. spec may change in the future. + ## + ## ex. + ## input = < + ## <%= item %> : <%== item %> + ## [= item =] : [== item =] + ## <% end %> + ## END + ## + ## class BiPatternEruby + ## include BiPatternEnhancer + ## end + ## eruby = BiPatternEruby.new(input, :bipattern=>'\[= =\]') + ## list = ['', 'b&b', '"c"'] + ## print eruby.result(binding()) + ## + ## ## output + ## : <a> + ## : <a> + ## b&b : b&b + ## b&b : b&b + ## "c" : "c" + ## "c" : "c" + ## + ## this is language independent. + ## + module BiPatternEnhancer + + def self.desc # :nodoc: + "another embedded expression pattern (default '\[= =\]')." + end + + def initialize(input, properties={}) + self.bipattern = properties[:bipattern] # or '\$\{ \}' + super + end + + ## when pat is nil then '\[= =\]' is used + def bipattern=(pat) # :nodoc: + @bipattern = pat || '\[= =\]' + pre, post = @bipattern.split() + @bipattern_regexp = /(.*?)#{pre}(=*)(.*?)#{post}/m + end + + def add_text(src, text) + return unless text + m = nil + text.scan(@bipattern_regexp) do |txt, indicator, code| + m = Regexp.last_match + super(src, txt) + add_expr(src, code, '=' + indicator) + end + #rest = $' || text # ruby1.8 + rest = m ? text[m.end(0)..-1] : text # ruby1.9 + super(src, rest) + end + + end + + + ## + ## regards lines starting with '^[ \t]*%' as program code + ## + ## in addition you can specify prefix character (default '%') + ## + ## this is language-independent. + ## + module PrefixedLineEnhancer + + def self.desc # :nodoc: + "regard lines matched to '^[ \t]*%' as program code" + end + + def init_generator(properties={}) + super + @prefixchar = properties[:prefixchar] + end + + def add_text(src, text) + unless @prefixrexp + @prefixchar ||= '%' + @prefixrexp = Regexp.compile("^([ \\t]*)\\#{@prefixchar}(.*?\\r?\\n)") + end + pos = 0 + text2 = '' + text.scan(@prefixrexp) do + space = $1 + line = $2 + space, line = '', $1 unless $2 + match = Regexp.last_match + len = match.begin(0) - pos + str = text[pos, len] + pos = match.end(0) + if text2.empty? + text2 = str + else + text2 << str + end + if line[0, 1] == @prefixchar + text2 << space << line + else + super(src, text2) + text2 = '' + add_stmt(src, space + line) + end + end + #rest = pos == 0 ? text : $' # ruby1.8 + rest = pos == 0 ? text : text[pos..-1] # ruby1.9 + unless text2.empty? + text2 << rest if rest + rest = text2 + end + super(src, rest) + end + + end + + + ## + ## regards lines starting with '%' as program code + ## + ## this is for compatibility to eruby and ERB. + ## + ## this is language-independent. + ## + module PercentLineEnhancer + include PrefixedLineEnhancer + + def self.desc # :nodoc: + "regard lines starting with '%' as program code" + end + + #-- + #def init_generator(properties={}) + # super + # @prefixchar = '%' + # @prefixrexp = /^\%(.*?\r?\n)/ + #end + #++ + + def add_text(src, text) + unless @prefixrexp + @prefixchar = '%' + @prefixrexp = /^\%(.*?\r?\n)/ + end + super(src, text) + end + + end + + + ## + ## [experimental] allow header and footer in eRuby script + ## + ## ex. + ## ==================== + ## ## without header and footer + ## $ cat ex1.eruby + ## <% def list_items(list) %> + ## <% for item in list %> + ##
  • <%= item %>
  • + ## <% end %> + ## <% end %> + ## + ## $ erubis -s ex1.eruby + ## _buf = []; def list_items(list) + ## ; for item in list + ## ; _buf << '
  • '; _buf << ( item ).to_s; _buf << '
  • + ## '; end + ## ; end + ## ; + ## _buf.join + ## + ## ## with header and footer + ## $ cat ex2.eruby + ## + ## <% for item in list %> + ##
  • <%= item %>
  • + ## <% end %> + ## + ## + ## $ erubis -s -c HeaderFooterEruby ex4.eruby + ## + ## def list_items(list) + ## _buf = []; _buf << ' + ## '; for item in list + ## ; _buf << '
  • '; _buf << ( item ).to_s; _buf << '
  • + ## '; end + ## ; _buf << ' + ## '; + ## _buf.join + ## end + ## + ## ==================== + ## + ## this is language-independent. + ## + module HeaderFooterEnhancer + + def self.desc # :nodoc: + "allow header/footer in document (ex. '')" + end + + HEADER_FOOTER_PATTERN = /(.*?)(^[ \t]*)?([ \t]*\r?\n)?/m + + def add_text(src, text) + m = nil + text.scan(HEADER_FOOTER_PATTERN) do |txt, lspace, word, content, rspace| + m = Regexp.last_match + flag_trim = @trim && lspace && rspace + super(src, txt) + content = "#{lspace}#{content}#{rspace}" if flag_trim + super(src, lspace) if !flag_trim && lspace + instance_variable_set("@#{word}", content) + super(src, rspace) if !flag_trim && rspace + end + #rest = $' || text # ruby1.8 + rest = m ? text[m.end(0)..-1] : text # ruby1.9 + super(src, rest) + end + + attr_accessor :header, :footer + + def convert(input) + source = super + return @src = "#{@header}#{source}#{@footer}" + end + + end + + + ## + ## delete indentation of HTML. + ## + ## this is language-independent. + ## + module DeleteIndentEnhancer + + def self.desc # :nodoc: + "delete indentation of HTML." + end + + def convert_input(src, input) + input = input.gsub(/^[ \t]+<%=title%>" into "_buf << %Q`

    #{title}

    `" + ## + ## this is only for Eruby. + ## + module InterpolationEnhancer + + def self.desc # :nodoc: + "convert '

    <%=text%>

    ' into '_buf << %Q`

    \#{text}

    `'" + end + + def convert_input(src, input) + pat = @pattern + regexp = pat.nil? || pat == '<% %>' ? Basic::Converter::DEFAULT_REGEXP : pattern_regexp(pat) + pos = 0 + is_bol = true # is beginning of line + str = '' + input.scan(regexp) do |indicator, code, tailch, rspace| + match = Regexp.last_match() + len = match.begin(0) - pos + text = input[pos, len] + pos = match.end(0) + ch = indicator ? indicator[0] : nil + lspace = ch == ?= ? nil : detect_spaces_at_bol(text, is_bol) + is_bol = rspace ? true : false + _add_text_to_str(str, text) + ## * when '<%= %>', do nothing + ## * when '<% %>' or '<%# %>', delete spaces iff only spaces are around '<% %>' + if ch == ?= # <%= %> + rspace = nil if tailch && !tailch.empty? + str << lspace if lspace + add_expr(str, code, indicator) + str << rspace if rspace + elsif ch == ?\# # <%# %> + n = code.count("\n") + (rspace ? 1 : 0) + if @trim && lspace && rspace + add_text(src, str) + str = '' + add_stmt(src, "\n" * n) + else + str << lspace if lspace + add_text(src, str) + str = '' + add_stmt(src, "\n" * n) + str << rspace if rspace + end + else # <% %> + if @trim && lspace && rspace + add_text(src, str) + str = '' + add_stmt(src, "#{lspace}#{code}#{rspace}") + else + str << lspace if lspace + add_text(src, str) + str = '' + add_stmt(src, code) + str << rspace if rspace + end + end + end + #rest = $' || input # ruby1.8 + rest = pos == 0 ? input : input[pos..-1] # ruby1.9 + _add_text_to_str(str, rest) + add_text(src, str) + end + + def add_text(src, text) + return if !text || text.empty? + #src << " _buf << %Q`" << text << "`;" + if text[-1] == ?\n + text[-1] = "\\n" + src << " #{@bufvar} << %Q`#{text}`\n" + else + src << " #{@bufvar} << %Q`#{text}`;" + end + end + + def _add_text_to_str(str, text) + return if !text || text.empty? + str << text.gsub(/[`\#\\]/, '\\\\\&') + end + + def add_expr_escaped(str, code) + str << "\#{#{escaped_expr(code)}}" + end + + def add_expr_literal(str, code) + str << "\#{#{code}}" + end + + end + + +end +#--end of require 'erubis/enhancer' +#require 'erubis/tiny' +#--begin of require 'erubis/engine/eruby' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +#--already included require 'erubis/engine' +#--already included require 'erubis/enhancer' + + +module Erubis + + + ## + ## code generator for Ruby + ## + module RubyGenerator + include Generator + #include ArrayBufferEnhancer + include StringBufferEnhancer + + def init_generator(properties={}) + super + @escapefunc ||= "Erubis::XmlHelper.escape_xml" + @bufvar = properties[:bufvar] || "_buf" + end + + def self.supported_properties() # :nodoc: + return [] + end + + def escape_text(text) + text.gsub(/['\\]/, '\\\\\&') # "'" => "\\'", '\\' => '\\\\' + end + + def escaped_expr(code) + return "#{@escapefunc}(#{code})" + end + + #-- + #def add_preamble(src) + # src << "#{@bufvar} = [];" + #end + #++ + + def add_text(src, text) + src << " #{@bufvar} << '" << escape_text(text) << "';" unless text.empty? + end + + def add_stmt(src, code) + #src << code << ';' + src << code + src << ';' unless code[-1] == ?\n + end + + def add_expr_literal(src, code) + src << " #{@bufvar} << (" << code << ').to_s;' + end + + def add_expr_escaped(src, code) + src << " #{@bufvar} << " << escaped_expr(code) << ';' + end + + def add_expr_debug(src, code) + code.strip! + s = (code.dump =~ /\A"(.*)"\z/) && $1 + src << ' $stderr.puts("*** debug: ' << s << '=#{(' << code << ').inspect}");' + end + + #-- + #def add_postamble(src) + # src << "\n#{@bufvar}.join\n" + #end + #++ + + end + + + ## + ## engine for Ruby + ## + class Eruby < Basic::Engine + include RubyEvaluator + include RubyGenerator + end + + + ## + ## fast engine for Ruby + ## + class FastEruby < Eruby + include InterpolationEnhancer + end + + + ## + ## swtich '<%= %>' to escaped and '<%== %>' to not escaped + ## + class EscapedEruby < Eruby + include EscapeEnhancer + end + + + ## + ## sanitize expression (<%= ... %>) by default + ## + ## this is equivalent to EscapedEruby and is prepared only for compatibility. + ## + class XmlEruby < Eruby + include EscapeEnhancer + end + + + class PI::Eruby < PI::Engine + include RubyEvaluator + include RubyGenerator + + def init_converter(properties={}) + @pi = 'rb' + super(properties) + end + + end + + +end +#--end of require 'erubis/engine/eruby' +#require 'erubis/engine/enhanced' # enhanced eruby engines +#require 'erubis/engine/optimized' # generates optimized ruby code +#require 'erubis/engine/ephp' +#require 'erubis/engine/ec' +#require 'erubis/engine/ejava' +#require 'erubis/engine/escheme' +#require 'erubis/engine/eperl' +#require 'erubis/engine/ejavascript' + +#--begin of require 'erubis/local-setting' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +## +## you can add site-local settings here. +## this files is required by erubis.rb +## +#--end of require 'erubis/local-setting' +#--end of require 'erubis' +#--begin of require 'erubis/tiny' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +module Erubis + + ## + ## tiny and the simplest implementation of eRuby + ## + ## ex. + ## eruby = TinyEruby.new(File.read('example.rhtml')) + ## print eruby.src # print ruby code + ## print eruby.result(binding()) # eval ruby code with Binding object + ## print eruby.evalute(context) # eval ruby code with context object + ## + class TinyEruby + + def initialize(input=nil) + @src = convert(input) if input + end + attr_reader :src + + EMBEDDED_PATTERN = /<%(=+|\#)?(.*?)-?%>/m + + def convert(input) + src = "_buf = '';" # preamble + pos = 0 + input.scan(EMBEDDED_PATTERN) do |indicator, code| + m = Regexp.last_match + text = input[pos...m.begin(0)] + pos = m.end(0) + #src << " _buf << '" << escape_text(text) << "';" + text.gsub!(/['\\]/, '\\\\\&') + src << " _buf << '" << text << "';" unless text.empty? + if !indicator # <% %> + src << code << ";" + elsif indicator == '#' # <%# %> + src << ("\n" * code.count("\n")) + else # <%= %> + src << " _buf << (" << code << ").to_s;" + end + end + #rest = $' || input # ruby1.8 + rest = pos == 0 ? input : input[pos..-1] # ruby1.9 + #src << " _buf << '" << escape_text(rest) << "';" + rest.gsub!(/['\\]/, '\\\\\&') + src << " _buf << '" << rest << "';" unless rest.empty? + src << "\n_buf.to_s\n" # postamble + return src + end + + #def escape_text(text) + # return text.gsub!(/['\\]/, '\\\\\&') || text + #end + + def result(_binding=TOPLEVEL_BINDING) + eval @src, _binding + end + + def evaluate(_context=Object.new) + if _context.is_a?(Hash) + _obj = Object.new + _context.each do |k, v| _obj.instance_variable_set("@#{k}", v) end + _context = _obj + end + _context.instance_eval @src + end + + end + + + + module PI + end + + class PI::TinyEruby + + def initialize(input=nil, options={}) + @escape = options[:escape] || 'Erubis::XmlHelper.escape_xml' + @src = convert(input) if input + end + + attr_reader :src + + EMBEDDED_PATTERN = /(^[ \t]*)?<\?rb(\s.*?)\?>([ \t]*\r?\n)?|@(!+)?\{(.*?)\}@/m + + def convert(input) + src = "_buf = '';" # preamble + pos = 0 + input.scan(EMBEDDED_PATTERN) do |lspace, stmt, rspace, indicator, expr| + match = Regexp.last_match + len = match.begin(0) - pos + text = input[pos, len] + pos = match.end(0) + #src << " _buf << '" << escape_text(text) << "';" + text.gsub!(/['\\]/, '\\\\\&') + src << " _buf << '" << text << "';" unless text.empty? + if stmt # + if lspace && rspace + src << "#{lspace}#{stmt}#{rspace}" + else + src << " _buf << '" << lspace << "';" if lspace + src << stmt << ";" + src << " _buf << '" << rspace << "';" if rspace + end + else # ${...}, $!{...} + if !indicator + src << " _buf << " << @escape << "(" << expr << ");" + elsif indicator == '!' + src << " _buf << (" << expr << ").to_s;" + end + end + end + #rest = $' || input # ruby1.8 + rest = pos == 0 ? input : input[pos..-1] # ruby1.9 + #src << " _buf << '" << escape_text(rest) << "';" + rest.gsub!(/['\\]/, '\\\\\&') + src << " _buf << '" << rest << "';" unless rest.empty? + src << "\n_buf.to_s\n" # postamble + return src + end + + #def escape_text(text) + # return text.gsub!(/['\\]/, '\\\\\&') || text + #end + + def result(_binding=TOPLEVEL_BINDING) + eval @src, _binding + end + + def evaluate(_context=Object.new) + if _context.is_a?(Hash) + _obj = Object.new + _context.each do |k, v| _obj.instance_variable_set("@#{k}", v) end + _context = _obj + end + _context.instance_eval @src + end + + end + + +end +#--end of require 'erubis/tiny' +#--begin of require 'erubis/engine/enhanced' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +#--already included require 'erubis/enhancer' +#--already included require 'erubis/engine/eruby' + + +module Erubis + + + #-- + ## moved to engine/ruby.rb + #class EscapedEruby < Eruby + # include EscapeEnhancer + #end + #++ + + + #-- + ### (obsolete) + #class FastEruby < Eruby + # include FastEnhancer + #end + #++ + + + class StdoutEruby < Eruby + include StdoutEnhancer + end + + + class PrintOutEruby < Eruby + include PrintOutEnhancer + end + + + class PrintEnabledEruby < Eruby + include PrintEnabledEnhancer + end + + + class ArrayEruby < Eruby + include ArrayEnhancer + end + + + class ArrayBufferEruby < Eruby + include ArrayBufferEnhancer + end + + + class StringBufferEruby < Eruby + include StringBufferEnhancer + end + + + class StringIOEruby < Eruby + include StringIOEnhancer + end + + + class ErboutEruby < Eruby + include ErboutEnhancer + end + + + class NoTextEruby < Eruby + include NoTextEnhancer + end + + + class NoCodeEruby < Eruby + include NoCodeEnhancer + end + + + class SimplifiedEruby < Eruby + include SimplifyEnhancer + end + + + class StdoutSimplifiedEruby < Eruby + include StdoutEnhancer + include SimplifyEnhancer + end + + + class PrintOutSimplifiedEruby < Eruby + include PrintOutEnhancer + include SimplifyEnhancer + end + + + class BiPatternEruby < Eruby + include BiPatternEnhancer + end + + + class PercentLineEruby < Eruby + include PercentLineEnhancer + end + + + class PrefixedLineEruby < Eruby + include PrefixedLineEnhancer + end + + + class HeaderFooterEruby < Eruby + include HeaderFooterEnhancer + end + + + class DeleteIndentEruby < Eruby + include DeleteIndentEnhancer + end + + + class InterpolationEruby < Eruby + include InterpolationEnhancer + end + + +end +#--end of require 'erubis/engine/enhanced' +#--begin of require 'erubis/engine/optimized' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + + +#--already included require 'erubis/engine/eruby' + + +module Erubis + + + module OptimizedGenerator + include Generator + + def self.supported_properties() # :nodoc: + return [] + end + + def init_generator(properties={}) + super + @escapefunc ||= "Erubis::XmlHelper.escape_xml" + @initialized = false + @prev_is_expr = false + end + + protected + + def escape_text(text) + text.gsub(/['\\]/, '\\\\\&') # "'" => "\\'", '\\' => '\\\\' + end + + def escaped_expr(code) + @escapefunc ||= 'Erubis::XmlHelper.escape_xml' + return "#{@escapefunc}(#{code})" + end + + def switch_to_expr(src) + return if @prev_is_expr + @prev_is_expr = true + src << ' _buf' + end + + def switch_to_stmt(src) + return unless @prev_is_expr + @prev_is_expr = false + src << ';' + end + + def add_preamble(src) + #@initialized = false + #@prev_is_expr = false + end + + def add_text(src, text) + return if text.empty? + if @initialized + switch_to_expr(src) + src << " << '" << escape_text(text) << "'" + else + src << "_buf = '" << escape_text(text) << "';" + @initialized = true + end + end + + def add_stmt(src, code) + switch_to_stmt(src) if @initialized + #super + src << code + src << ';' unless code[-1] == ?\n + end + + def add_expr_literal(src, code) + unless @initialized; src << "_buf = ''"; @initialized = true; end + switch_to_expr(src) + src << " << (" << code << ").to_s" + end + + def add_expr_escaped(src, code) + unless @initialized; src << "_buf = ''"; @initialized = true; end + switch_to_expr(src) + src << " << " << escaped_expr(code) + end + + def add_expr_debug(src, code) + code.strip! + s = (code.dump =~ /\A"(.*)"\z/) && $1 + src << ' $stderr.puts("*** debug: ' << s << '=#{(' << code << ').inspect}");' + end + + def add_postamble(src) + #super if @initialized + src << "\n_buf\n" if @initialized + end + + end # end of class OptimizedEruby + + + ## + ## Eruby class which generates optimized ruby code + ## + class OptimizedEruby < Basic::Engine # Eruby + include RubyEvaluator + include OptimizedGenerator + + def init_converter(properties={}) + @pi = 'rb' + super(properties) + end + + end + + + ## + ## XmlEruby class which generates optimized ruby code + ## + class OptimizedXmlEruby < OptimizedEruby + include EscapeEnhancer + + def add_expr_debug(src, code) + switch_to_stmt(src) if indicator == '===' && !@initialized + super + end + + end # end of class OptimizedXmlEruby + +end +#--end of require 'erubis/engine/optimized' +#--already included require 'erubis/engine/eruby' +#--begin of require 'erubis/engine/ephp' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +#--already included require 'erubis/engine' +#--already included require 'erubis/enhancer' + + +module Erubis + + + module PhpGenerator + include Generator + + def self.supported_properties() # :nodoc: + return [] + end + + def init_generator(properties={}) + super + @escapefunc ||= 'htmlspecialchars' + end + + def add_preamble(src) + # empty + end + + def escape_text(text) + return text.gsub!(/<\?xml\b/, '<?xml') || text + end + + def add_text(src, text) + src << escape_text(text) + end + + def add_expr_literal(src, code) + code.strip! + src << "" + end + + def add_expr_escaped(src, code) + add_expr_literal(src, escaped_expr(code)) + end + + def add_expr_debug(src, code) + code.strip! + s = code.gsub(/\'/, "\\'") + src << "" + end + + def add_stmt(src, code) + src << "\n" + else + src << code << "?>" + end + end + + def add_postamble(src) + # empty + end + + end + + + ## + ## engine for PHP + ## + class Ephp < Basic::Engine + include PhpGenerator + end + + + class EscapedEphp < Ephp + include EscapeEnhancer + end + + + #class XmlEphp < Ephp + # include EscapeEnhancer + #end + + + class PI::Ephp < PI::Engine + include PhpGenerator + + def init_converter(properties={}) + @pi = 'php' + super(properties) + end + + end + + +end +#--end of require 'erubis/engine/ephp' +#--begin of require 'erubis/engine/ec' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +#--already included require 'erubis/engine' +#--already included require 'erubis/enhancer' + + +module Erubis + + + module CGenerator + include Generator + + def self.supported_properties() # :nodoc: + return [ + [:indent, '', "indent spaces (ex. ' ')"], + [:out, 'stdout', "output file pointer name"], + ] + end + + def init_generator(properties={}) + super + @escapefunc ||= "escape" + @indent = properties[:indent] || '' + @out = properties[:out] || 'stdout' + end + + def add_preamble(src) + src << "#line 1 \"#{self.filename}\"\n" if self.filename + end + + def escape_text(text) + @@table_ ||= { "\r"=>"\\r", "\n"=>"\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" } + text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] } + return text + end + + def escaped_expr(code) + return "#{@escapefunc}(#{code.strip}, #{@out})" + end + + def add_text(src, text) + return if text.empty? + src << (src.empty? || src[-1] == ?\n ? @indent : ' ') + src << "fputs(" + i = 0 + text.each_line do |line| + src << "\n" << @indent << ' ' if i > 0 + i += 1 + src << '"' << escape_text(line) << '"' + end + src << ", #{@out});" #<< (text[-1] == ?\n ? "\n" : "") + src << "\n" if text[-1] == ?\n + end + + def add_stmt(src, code) + src << code + end + + def add_expr_literal(src, code) + src << @indent if src.empty? || src[-1] == ?\n + src << " fprintf(#{@out}, " << code.strip << ');' + end + + def add_expr_escaped(src, code) + src << @indent if src.empty? || src[-1] == ?\n + src << ' ' << escaped_expr(code) << ';' + end + + def add_expr_debug(src, code) + code.strip! + s = nil + if code =~ /\A\".*?\"\s*,\s*(.*)/ + s = $1.gsub(/[%"]/, '\\\1') + '=' + end + src << @indent if src.empty? || src[-1] == ?\n + src << " fprintf(stderr, \"*** debug: #{s}\" #{code});" + end + + def add_postamble(src) + # empty + end + + end + + + ## + ## engine for C + ## + class Ec < Basic::Engine + include CGenerator + end + + + class EscapedEc < Ec + include EscapeEnhancer + end + + + #class XmlEc < Ec + # include EscapeEnhancer + #end + + class PI::Ec < PI::Engine + include CGenerator + + def init_converter(properties={}) + @pi = 'c' + super(properties) + end + + end + + +end +#--end of require 'erubis/engine/ec' +#--begin of require 'erubis/engine/ecpp' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +#--already included require 'erubis/engine' +#--already included require 'erubis/enhancer' + + +module Erubis + + + module CppGenerator + include Generator + + def self.supported_properties() # :nodoc: + return [ + [:indent, '', "indent spaces (ex. ' ')"], + [:bufvar, '_buf', "buffer variable name"], + ] + end + + def init_generator(properties={}) + super + @escapefunc ||= "escape" + @indent = properties[:indent] || '' + @bufvar = properties[:bufvar] || '_buf' + end + + def add_preamble(src) + src << "#line 1 \"#{self.filename}\"\n" if self.filename + end + + def escape_text(text) + @@table_ ||= { "\r"=>"\\r", "\n"=>"\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" } + text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] } + return text + end + + def escaped_expr(code) + return "#{@escapefunc}(#{code.strip})" + end + + def add_text(src, text) + return if text.empty? + src << (src.empty? || src[-1] == ?\n ? @indent : ' ') + src << "_buf << " + i = 0 + text.each_line do |line| + src << "\n" << @indent << " " if i > 0 + i += 1 + src << '"' << escape_text(line) << '"' + end + src << ";" #<< (text[-1] == ?\n ? "\n" : "") + src << "\n" if text[-1] == ?\n + end + + def add_stmt(src, code) + src << code + end + + def add_expr_literal(src, code) + src << @indent if src.empty? || src[-1] == ?\n + src << " _buf << (" << code.strip << ");" + end + + def add_expr_escaped(src, code) + src << @indent if src.empty? || src[-1] == ?\n + src << ' ' << escaped_expr(code) << ';' + end + + def add_expr_debug(src, code) + code.strip! + src << @indent if src.empty? || src[-1] == ?\n + src << " std::cerr << \"*** debug: #{code.gsub(/(")/, '\\\&')}=\" << (#{code});" + end + + def add_postamble(src) + # empty + end + + end + + + ## + ## engine for C + ## + class Ecpp < Basic::Engine + include CppGenerator + end + + + class EscapedEcpp < Ecpp + include EscapeEnhancer + end + + + #class XmlEcpp < Ecpp + # include EscapeEnhancer + #end + + class PI::Ecpp < PI::Engine + include CppGenerator + + def init_converter(properties={}) + @pi = 'cpp' + super(properties) + end + + end + + +end +#--end of require 'erubis/engine/ecpp' +#--begin of require 'erubis/engine/ejava' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +#--already included require 'erubis/engine' +#--already included require 'erubis/enhancer' + + +module Erubis + + + module JavaGenerator + include Generator + + def self.supported_properties() # :nodoc: + return [ + [:indent, '', "indent spaces (ex. ' ')"], + [:bufvar, '_buf', "output buffer variable name"], + [:bufclass, 'StringBuffer', "output buffer class (ex. 'StringBuilder')"], + ] + end + + def init_generator(properties={}) + super + @escapefunc ||= 'escape' + @indent = properties[:indent] || '' + @bufvar = properties[:bufvar] || '_buf' + @bufclass = properties[:bufclass] || 'StringBuffer' + end + + def add_preamble(src) + src << "#{@indent}#{@bufclass} #{@bufvar} = new #{@bufclass}();" + end + + def escape_text(text) + @@table_ ||= { "\r"=>"\\r", "\n"=>"\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" } + return text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] } || text + end + + def add_text(src, text) + return if text.empty? + src << (src.empty? || src[-1] == ?\n ? @indent : ' ') + src << @bufvar << ".append(" + i = 0 + text.each_line do |line| + src << "\n" << @indent << ' + ' if i > 0 + i += 1 + src << '"' << escape_text(line) << '"' + end + src << ");" << (text[-1] == ?\n ? "\n" : "") + end + + def add_stmt(src, code) + src << code + end + + def add_expr_literal(src, code) + src << @indent if src.empty? || src[-1] == ?\n + code.strip! + src << " #{@bufvar}.append(#{code});" + end + + def add_expr_escaped(src, code) + add_expr_literal(src, escaped_expr(code)) + end + + def add_expr_debug(src, code) + code.strip! + src << @indent if src.empty? || src[-1] == ?\n + src << " System.err.println(\"*** debug: #{code}=\"+(#{code}));" + end + + def add_postamble(src) + src << "\n" if src[-1] == ?; + src << @indent << "return " << @bufvar << ".toString();\n" + #src << @indent << "System.out.print(" << @bufvar << ".toString());\n" + end + + end + + + ## + ## engine for Java + ## + class Ejava < Basic::Engine + include JavaGenerator + end + + + class EscapedEjava < Ejava + include EscapeEnhancer + end + + + #class XmlEjava < Ejava + # include EscapeEnhancer + #end + + class PI::Ejava < PI::Engine + include JavaGenerator + + def init_converter(properties={}) + @pi = 'java' + super(properties) + end + + end + +end +#--end of require 'erubis/engine/ejava' +#--begin of require 'erubis/engine/escheme' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +#--already included require 'erubis/engine' +#--already included require 'erubis/enhancer' + + +module Erubis + + + module SchemeGenerator + include Generator + + def self.supported_properties() # :nodoc: + return [ + [:func, '_add', "function name (ex. 'display')"], + ] + end + + def init_generator(properties={}) + super + @escapefunc ||= 'escape' + @func = properties[:func] || '_add' # or 'display' + end + + def add_preamble(src) + return unless @func == '_add' + src << "(let ((_buf '())) " + \ + "(define (_add x) (set! _buf (cons x _buf))) " + #src << "(let* ((_buf '())" + \ + # " (_add (lambda (x) (set! _buf (cons x _buf))))) " + end + + def escape_text(text) + @table_ ||= { '"'=>'\\"', '\\'=>'\\\\' } + text.gsub!(/["\\]/) { |m| @table_[m] } + return text + end + + def escaped_expr(code) + code.strip! + return "(#{@escapefunc} #{code})" + end + + def add_text(src, text) + return if text.empty? + t = escape_text(text) + if t[-1] == ?\n + t[-1, 1] = '' + src << "(#{@func} \"" << t << "\\n\")\n" + else + src << "(#{@func} \"" << t << '")' + end + end + + def add_stmt(src, code) + src << code + end + + def add_expr_literal(src, code) + code.strip! + src << "(#{@func} #{code})" + end + + def add_expr_escaped(src, code) + add_expr_literal(src, escaped_expr(code)) + end + + def add_expr_debug(src, code) + s = (code.strip! || code).gsub(/\"/, '\\"') + src << "(display \"*** debug: #{s}=\")(display #{code.strip})(display \"\\n\")" + end + + def add_postamble(src) + return unless @func == '_add' + src << "\n" unless src[-1] == ?\n + src << " (reverse _buf))\n" + end + + end + + + ## + ## engine for Scheme + ## + class Escheme < Basic::Engine + include SchemeGenerator + end + + + class EscapedEscheme < Escheme + include EscapeEnhancer + end + + + #class XmlEscheme < Escheme + # include EscapeEnhancer + #end + + + class PI::Escheme < PI::Engine + include SchemeGenerator + + def init_converter(properties={}) + @pi = 'scheme' + super(properties) + end + + end + + +end +#--end of require 'erubis/engine/escheme' +#--begin of require 'erubis/engine/eperl' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +#--already included require 'erubis/engine' +#--already included require 'erubis/enhancer' + + +module Erubis + + + module PerlGenerator + include Generator + + def self.supported_properties() # :nodoc: + return [ + [:func, 'print', "function name"], + ] + end + + def init_generator(properties={}) + super + @escapefunc ||= 'encode_entities' + @func = properties[:func] || 'print' + end + + def add_preamble(src) + src << "use HTML::Entities; "; + end + + def escape_text(text) + return text.gsub!(/['\\]/, '\\\\\&') || text + end + + def add_text(src, text) + src << @func << "('" << escape_text(text) << "'); " unless text.empty? + end + + def add_expr_literal(src, code) + code.strip! + src << @func << "(" << code << "); " + end + + def add_expr_escaped(src, code) + add_expr_literal(src, escaped_expr(code)) + end + + def add_expr_debug(src, code) + code.strip! + s = code.gsub(/\'/, "\\'") + src << @func << "('*** debug: #{code}=', #{code}, \"\\n\");" + end + + def add_stmt(src, code) + src << code + end + + def add_postamble(src) + src << "\n" unless src[-1] == ?\n + end + + end + + + ## + ## engine for Perl + ## + class Eperl < Basic::Engine + include PerlGenerator + end + + + class EscapedEperl < Eperl + include EscapeEnhancer + end + + + #class XmlEperl < Eperl + # include EscapeEnhancer + #end + + + class PI::Eperl < PI::Engine + include PerlGenerator + + def init_converter(properties={}) + @pi = 'perl' + super(properties) + end + + end + + +end +#--end of require 'erubis/engine/eperl' +#--begin of require 'erubis/engine/ejavascript' +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +#--already included require 'erubis/engine' +#--already included require 'erubis/enhancer' + + +module Erubis + + + module JavascriptGenerator + include Generator + + def self.supported_properties() # :nodoc: + list = [] + #list << [:indent, '', "indent spaces (ex. ' ')"] + #list << [:bufvar, '_buf', "output buffer variable name"] + list << [:docwrite, true, "use 'document.write()' when true"] + return list + end + + def init_generator(properties={}) + super + @escapefunc ||= 'escape' + @indent = properties[:indent] || '' + @bufvar = properties[:bufvar] || '_buf' + @docwrite = properties[:docwrite] != false # '!= false' will be removed in the next release + end + + def add_preamble(src) + src << "#{@indent}var #{@bufvar} = [];" + end + + def escape_text(text) + @@table_ ||= { "\r"=>"\\r", "\n"=>"\\n\\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" } + return text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] } || text + end + + def add_indent(src, indent) + src << (src.empty? || src[-1] == ?\n ? indent : ' ') + end + + def add_text(src, text) + return if text.empty? + add_indent(src, @indent) + src << @bufvar << '.push("' + s = escape_text(text) + if s[-1] == ?\n + s[-2, 2] = '' + src << s << "\");\n" + else + src << s << "\");" + end + end + + def add_stmt(src, code) + src << code + end + + def add_expr_literal(src, code) + add_indent(src, @indent) + code.strip! + src << "#{@bufvar}.push(#{code});" + end + + def add_expr_escaped(src, code) + add_expr_literal(src, escaped_expr(code)) + end + + def add_expr_debug(src, code) + add_indent(src, @indent) + code.strip! + src << "alert(\"*** debug: #{code}=\"+(#{code}));" + end + + def add_postamble(src) + src << "\n" if src[-1] == ?; + if @docwrite + src << @indent << 'document.write(' << @bufvar << ".join(\"\"));\n" + else + src << @indent << @bufvar << ".join(\"\");\n" + end + end + + end + + + ## + ## engine for JavaScript + ## + class Ejavascript < Basic::Engine + include JavascriptGenerator + end + + + class EscapedEjavascript < Ejavascript + include EscapeEnhancer + end + + + #class XmlEjavascript < Ejavascript + # include EscapeEnhancer + #end + + + class PI::Ejavascript < PI::Engine + include JavascriptGenerator + + def init_converter(properties={}) + @pi = 'js' + super(properties) + end + + end + + +end +#--end of require 'erubis/engine/ejavascript' + + +module Erubis + + + Ejs = Ejavascript + EscapedEjs = EscapedEjavascript + + + class CommandOptionError < ErubisError + end + + + ## + ## main class of command + ## + ## ex. + ## Main.main(ARGV) + ## + class Main + + def self.main(argv=ARGV) + status = 0 + begin + Main.new.execute(ARGV) + rescue CommandOptionError => ex + $stderr.puts ex.message + status = 1 + end + exit(status) + end + + def initialize + @single_options = "hvxztTSbeBXNUC" + @arg_options = "pcrfKIlaE" #C + @option_names = { + 'h' => :help, + 'v' => :version, + 'x' => :source, + 'z' => :syntax, + 'T' => :unexpand, + 't' => :untabify, # obsolete + 'S' => :intern, + 'b' => :bodyonly, + 'B' => :binding, + 'p' => :pattern, + 'c' => :context, + #'C' => :class, + 'e' => :escape, + 'r' => :requires, + 'f' => :datafiles, + 'K' => :kanji, + 'I' => :includes, + 'l' => :lang, + 'a' => :action, + 'E' => :enhancers, + 'X' => :notext, + 'N' => :linenum, + 'U' => :unique, + 'C' => :compact, + } + assert unless @single_options.length + @arg_options.length == @option_names.length + (@single_options + @arg_options).each_byte do |ch| + assert unless @option_names.key?(ch.chr) + end + end + + + def execute(argv=ARGV) + ## parse command-line options + options, properties = parse_argv(argv, @single_options, @arg_options) + filenames = argv + options['h'] = true if properties[:help] + opts = Object.new + arr = @option_names.collect {|ch, name| "def #{name}; @#{name}; end\n" } + opts.instance_eval arr.join + options.each do |ch, val| + name = @option_names[ch] + opts.instance_variable_set("@#{name}", val) + end + + ## help, version, enhancer list + if opts.help || opts.version + puts version() if opts.version + puts usage() if opts.help + puts show_properties() if opts.help + puts show_enhancers() if opts.help + return + end + + ## include path + opts.includes.split(/,/).each do |path| + $: << path + end if opts.includes + + ## require library + opts.requires.split(/,/).each do |library| + require library + end if opts.requires + + ## action + action = opts.action + action ||= 'syntax' if opts.syntax + action ||= 'convert' if opts.source || opts.notext + + ## lang + lang = opts.lang || 'ruby' + action ||= 'convert' if opts.lang + + ## class name of Eruby + #classname = opts.class + classname = nil + klass = get_classobj(classname, lang, properties[:pi]) + + ## kanji code + $KCODE = opts.kanji if opts.kanji + + ## read context values from yaml file + datafiles = opts.datafiles + context = load_datafiles(datafiles, opts) + + ## parse context data + if opts.context + context = parse_context_data(opts.context, opts) + end + + ## properties for engine + properties[:escape] = true if opts.escape && !properties.key?(:escape) + properties[:pattern] = opts.pattern if opts.pattern + #properties[:trim] = false if opts.notrim + properties[:preamble] = properties[:postamble] = false if opts.bodyonly + properties[:pi] = nil if properties[:pi] == true + + ## create engine and extend enhancers + engine = klass.new(nil, properties) + enhancers = get_enhancers(opts.enhancers) + #enhancers.push(Erubis::EscapeEnhancer) if opts.escape + enhancers.each do |enhancer| + engine.extend(enhancer) + engine.bipattern = properties[:bipattern] if enhancer == Erubis::BiPatternEnhancer + end + + ## no-text + engine.extend(Erubis::NoTextEnhancer) if opts.notext + + ## convert and execute + val = nil + msg = "Syntax OK\n" + if filenames && !filenames.empty? + filenames.each do |filename| + File.file?(filename) or + raise CommandOptionError.new("#{filename}: file not found.") + engine.filename = filename + engine.convert!(File.read(filename)) + val = do_action(action, engine, context, filename, opts) + msg = nil if val + end + else + engine.filename = filename = '(stdin)' + engine.convert!($stdin.read()) + val = do_action(action, engine, context, filename, opts) + msg = nil if val + end + print msg if action == 'syntax' && msg + + end + + private + + def do_action(action, engine, context, filename, opts) + case action + when 'convert' + s = manipulate_src(engine.src, opts) + when nil, 'exec', 'execute' + s = opts.binding ? engine.result(context.to_hash) : engine.evaluate(context) + when 'syntax' + s = check_syntax(filename, engine.src) + else + raise "*** internal error" + end + print s if s + return s + end + + def manipulate_src(source, opts) + flag_linenum = opts.linenum + flag_unique = opts.unique + flag_compact = opts.compact + if flag_linenum + n = 0 + source.gsub!(/^/) { n += 1; "%5d: " % n } + source.gsub!(/^ *\d+:\s+?\n/, '') if flag_compact + source.gsub!(/(^ *\d+:\s+?\n)+/, "\n") if flag_unique + else + source.gsub!(/^\s*?\n/, '') if flag_compact + source.gsub!(/(^\s*?\n)+/, "\n") if flag_unique + end + return source + end + + def usage(command=nil) + command ||= File.basename($0) + buf = [] + buf << "erubis - embedded program converter for multi-language" + buf << "Usage: #{command} [..options..] [file ...]" + buf << " -h, --help : help" + buf << " -v : version" + buf << " -x : show converted code" + buf << " -X : show converted code, only ruby code and no text part" + buf << " -N : numbering: add line numbers (for '-x/-X')" + buf << " -U : unique: compress empty lines to a line (for '-x/-X')" + buf << " -C : compact: remove empty lines (for '-x/-X')" + buf << " -b : body only: no preamble nor postamble (for '-x/-X')" + buf << " -z : syntax checking" + buf << " -e : escape (equal to '--E Escape')" + buf << " -p pattern : embedded pattern (default '<% %>')" + buf << " -l lang : convert but no execute (ruby/php/c/cpp/java/scheme/perl/js)" + buf << " -E e1,e2,... : enhancer names (Escape, PercentLine, BiPattern, ...)" + buf << " -I path : library include path" + buf << " -K kanji : kanji code (euc/sjis/utf8) (default none)" + buf << " -c context : context data string (yaml inline style or ruby code)" + buf << " -f datafile : context data file ('*.yaml', '*.yml', or '*.rb')" + #buf << " -t : expand tab characters in YAML file" + buf << " -T : don't expand tab characters in YAML file" + buf << " -S : convert mapping key from string to symbol in YAML file" + buf << " -B : invoke 'result(binding)' instead of 'evaluate(context)'" + buf << " --pi=name : parse '' instead of '<% ... %>'" + #' + # -T : don't trim spaces around '<% %>' + # -c class : class name (XmlEruby/PercentLineEruby/...) (default Eruby) + # -r library : require library + # -a : action (convert/execute) + return buf.join("\n") + end + + def collect_supported_properties(erubis_klass) + list = [] + erubis_klass.ancestors.each do |klass| + if klass.respond_to?(:supported_properties) + list.concat(klass.supported_properties) + end + end + return list + end + + def show_properties + s = "supported properties:\n" + basic_props = collect_supported_properties(Erubis::Basic::Engine) + pi_props = collect_supported_properties(Erubis::PI::Engine) + list = [] + common_props = basic_props & pi_props + list << ['(common)', common_props] + list << ['(basic)', basic_props - common_props] + list << ['(pi)', pi_props - common_props] + %w[ruby php c cpp java scheme perl javascript].each do |lang| + klass = Erubis.const_get("E#{lang}") + list << [lang, collect_supported_properties(klass) - basic_props] + end + list.each do |lang, props| + s << " * #{lang}\n" + props.each do |name, default_val, desc| + s << (" --%-23s : %s\n" % ["#{name}=#{default_val.inspect}", desc]) + end + end + s << "\n" + return s + end + + def show_enhancers + dict = {} + ObjectSpace.each_object(Module) do |mod| + dict[$1] = mod if mod.name =~ /\AErubis::(.*)Enhancer\z/ + end + s = "enhancers:\n" + dict.sort_by {|name, mod| name }.each do |name, mod| + s << (" %-13s : %s\n" % [name, mod.desc]) + end + return s + end + + def version + return Erubis::VERSION + end + + def parse_argv(argv, arg_none='', arg_required='', arg_optional='') + options = {} + context = {} + while argv[0] && argv[0][0] == ?- + optstr = argv.shift + optstr = optstr[1, optstr.length-1] + # + if optstr[0] == ?- # context + optstr =~ /\A\-([-\w]+)(?:=(.*))?/ or + raise CommandOptionError.new("-#{optstr}: invalid context value.") + name, value = $1, $2 + name = name.gsub(/-/, '_').intern + #value = value.nil? ? true : YAML.load(value) # error, why? + value = value.nil? ? true : YAML.load("---\n#{value}\n") + context[name] = value + # + else # options + while optstr && !optstr.empty? + optchar = optstr[0].chr + optstr = optstr[1..-1] + if arg_none.include?(optchar) + options[optchar] = true + elsif arg_required.include?(optchar) + arg = optstr.empty? ? argv.shift : optstr or + raise CommandOptionError.new("-#{optchar}: #{@option_names[optchar]} required.") + options[optchar] = arg + optstr = nil + elsif arg_optional.include?(optchar) + arg = optstr.empty? ? true : optstr + options[optchar] = arg + optstr = nil + else + raise CommandOptionError.new("-#{optchar}: unknown option.") + end + end + end + # + end # end of while + + return options, context + end + + + def untabify(str, width=8) + list = str.split(/\t/) + last = list.pop + sb = '' + list.each do |s| + column = (n = s.rindex(?\n)) ? s.length - n - 1 : s.length + n = width - (column % width) + sb << s << (' ' * n) + end + sb << last + return sb + end + #-- + #def untabify(str, width=8) + # sb = '' + # str.scan(/(.*?)\t/m) do |s, | + # len = (n = s.rindex(?\n)) ? s.length - n - 1 : s.length + # sb << s << (" " * (width - len % width)) + # end + # return $' ? (sb << $') : str + #end + #++ + + + def get_classobj(classname, lang, pi) + classname ||= "E#{lang}" + base_module = pi ? Erubis::PI : Erubis + begin + klass = base_module.const_get(classname) + rescue NameError + klass = nil + end + unless klass + if lang + msg = "-l #{lang}: invalid language name (class #{base_module.name}::#{classname} not found)." + else + msg = "-c #{classname}: invalid class name." + end + raise CommandOptionError.new(msg) + end + return klass + end + + def get_enhancers(enhancer_names) + return [] unless enhancer_names + enhancers = [] + shortname = nil + begin + enhancer_names.split(/,/).each do |name| + shortname = name + enhancers << Erubis.const_get("#{shortname}Enhancer") + end + rescue NameError + raise CommandOptionError.new("#{shortname}: no such Enhancer (try '-h' to show all enhancers).") + end + return enhancers + end + + def load_datafiles(filenames, opts) + context = Erubis::Context.new + return context unless filenames + filenames.split(/,/).each do |filename| + filename.strip! + test(?f, filename) or raise CommandOptionError.new("#{filename}: file not found.") + if filename =~ /\.ya?ml$/ + if opts.unexpand + ydoc = YAML.load_file(filename) + else + ydoc = YAML.load(untabify(File.read(filename))) + end + ydoc.is_a?(Hash) or raise CommandOptionError.new("#{filename}: root object is not a mapping.") + intern_hash_keys(ydoc) if opts.intern + context.update(ydoc) + elsif filename =~ /\.rb$/ + str = File.read(filename) + context2 = Erubis::Context.new + _instance_eval(context2, str) + context.update(context2) + else + CommandOptionError.new("#{filename}: '*.yaml', '*.yml', or '*.rb' required.") + end + end + return context + end + + def _instance_eval(_context, _str) + _context.instance_eval(_str) + end + + def parse_context_data(context_str, opts) + if context_str[0] == ?{ + require 'yaml' + ydoc = YAML.load(context_str) + unless ydoc.is_a?(Hash) + raise CommandOptionError.new("-c: root object is not a mapping.") + end + intern_hash_keys(ydoc) if opts.intern + return ydoc + else + context = Erubis::Context.new + context.instance_eval(context_str, '-c') + return context + end + end + + def intern_hash_keys(obj, done={}) + return if done.key?(obj.__id__) + case obj + when Hash + done[obj.__id__] = obj + obj.keys.each do |key| + obj[key.intern] = obj.delete(key) if key.is_a?(String) + end + obj.values.each do |val| + intern_hash_keys(val, done) if val.is_a?(Hash) || val.is_a?(Array) + end + when Array + done[obj.__id__] = obj + obj.each do |val| + intern_hash_keys(val, done) if val.is_a?(Hash) || val.is_a?(Array) + end + end + end + + def check_syntax(filename, src) + require 'open3' + #command = (ENV['_'] || 'ruby') + ' -wc' # ENV['_'] stores command name + bin = ENV['_'] && File.basename(ENV['_']) =~ /^ruby/ ? ENV['_'] : 'ruby' + command = bin + ' -wc' + stdin, stdout, stderr = Open3.popen3(command) + stdin.write(src) + stdin.close + result = stdout.read() + stdout.close() + errmsg = stderr.read() + stderr.close() + return nil unless errmsg && !errmsg.empty? + errmsg =~ /\A-:(\d+): / + linenum, message = $1, $' + return "#{filename}:#{linenum}: #{message}" + end + + if defined?(RUBY_ENGINE) && RUBY_ENGINE == "rbx" + def check_syntax(filename, src) + require 'compiler' + verbose = $VERBOSE + msg = nil + begin + $VERBOSE = true + Rubinius::Compiler.compile_string(src, filename) + rescue SyntaxError => ex + ex_linenum = ex.line + linenum = 0 + srcline = src.each_line do |line| + linenum += 1 + break line if linenum == ex_linenum + end + msg = "#{ex.message}\n" + msg << srcline + msg << "\n" unless srcline =~ /\n\z/ + msg << (" " * (ex.column-1)) << "^\n" + ensure + $VERBOSE = verbose + end + return msg + end + end + + end + +end +#--end of require 'erubis/main' + +Erubis::Main.main(ARGV) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/contrib/erubis-run.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/contrib/erubis-run.rb new file mode 100644 index 0000000..44be6d4 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/contrib/erubis-run.rb @@ -0,0 +1,132 @@ +=begin + += apache/erubis-run.rb + +Copyright (C) 2007 Andrew R Jackson + +Built from original by Shugo Maeda: +Copyright (C) 2001 Shugo Maeda + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WAreqANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WAreqANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTEreqUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +== Overview + +Apache::ErubisRun handles eRuby files with erubis + +== Example of httpd.conf + + RubyRequire apache/erubis-run + + SetHandler ruby-object + RubyHandler Apache::ErubisRun.instance + + +=end + +require "singleton" +require "tempfile" +require "eruby" # Still needed to bring in a couple useful helper methods +require "erubis" + +module Erubis + @@cgi = nil + + def self.cgi + return @@cgi + end + + def self.cgi=(cgi) + @@cgi = cgi + end +end + +module Apache + class ErubisRun + include Singleton + + def handler(req) + status = check_request(req) + return status if(status != OK) + + filename = req.filename.dup + filename.untaint + erubis = compile(filename) + prerun(req) + begin + run(erubis, filename) + ensure + postrun(req) + end + + return OK + end + + private + + def initialize + @compiler = nil + end + + def check_request(req) + if(req.method_number == M_OPTIONS) + req.allowed |= (1 << M_GET) + req.allowed |= (1 << M_POST) + return DECLINED + end + if(req.finfo.mode == 0) + return NOT_FOUND + end + return OK + end + + def compile(filename) + @compiler = Erubis::Eruby.load_file(filename) # use caching version as much as possible + return @compiler + end + + def prerun(req) + Erubis.cgi = nil + req.setup_cgi_env + Apache.chdir_file(req.filename) + end + + def run(erubis, filename) + binding = eval_string_wrap("binding") + puts erubis.result(binding) # eval the code in the context of the same binding ERuby uses + end + + def postrun(req) + if(cgi = Erubis.cgi) + # TODO: pull the content type header from the cgi object, if set there? + elsif(req.sync_output or req.sync_header) + # Do nothing: header has already been sent + else + unless(req.content_type) + req.content_type = format("text/html;") + end + req.send_http_header + end + end + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/contrib/inline-require b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/contrib/inline-require new file mode 100755 index 0000000..de420c6 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/contrib/inline-require @@ -0,0 +1,179 @@ +#!/usr/bin/env ruby + +### +### inline-require - expand 'require "foo"' into inline code +### +### usage: inline-require [-h] [-I path[,path2,..]] script +### +### copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +### 2.7.0 +### $Rev: 10 $ +### + + +class InlineRequire + + def initialize(opts={}) + @opts = opts.dup + end + attr_accessor :opts + + def expand(filename) + sbuf = '' + inlined = [] + level = 0 + expand_require(filename, sbuf, inlined, level) + return sbuf + end + + private + + def expand_require(filename, sbuf, inlined, level) + raise "*** assertion error" if inlined.include?(filename) + remove_comment = @opts[:remove_comment] + expand_indented = @opts[:expand_indented] + keep_filename = @opts[:keep_filename] + loaded_features = @opts[:loaded_features] + inlined << filename + prog = File.read(filename) + n = 0 + flag_if_file = false + prog.each_line do |line| + n += 1 + + ## comment out from 'if __FILE__ == $0' to 'end' + if level > 0 + if flag_if_file + sbuf << "#" << line + flag_if_file = false if line =~ /^end$/ + next + end + if line =~ /^if\s+__FILE__\s*==\s*\$0(\s+then)?$/ || line =~ /^if\s+\$0\s*==\s*__FILE__(\s+then)?$/ + flag_if_file = true + sbuf << "#" << line + next + end + end + + ## find 'require "foo"' and expand it to inline code + flag_inline = false + pattern = expand_indented ? /^[ \t]*require ['"](.*)["']\s*$/ \ + : /^require ['"](.*)["']\s*$/ + if line =~ pattern + libname = $1 + libpath = find_library(libname) + $stderr.puts "*** debug: libpath=#{libpath.inspect}" if $debug_mode + unless libpath + #raise "file '#{filename}'(line #{n}): library '#{libname}' not found." + warn "file '#{filename}'(line #{n}): library '#{libname}' not found." + else + flag_inline = true if libpath =~ /\.rb$/ && local_library?(libpath) + end + end + if !flag_inline + sbuf << line unless remove_comment && line =~ /^[ \t]*\#/ + elsif inlined.include?(libpath) + sbuf << "#--already included #{line}" unless remove_comment + else + if keep_filename + @n ||= 0; @n += 1; n = @n + end + sbuf << "#--begin of #{line}" unless remove_comment + sbuf << "$LOADED_FEATURES << '#{libname}.rb'\n" if loaded_features + sbuf << "eval <<'END_OF_SCRIPT__#{n}', TOPLEVEL_BINDING, '#{libpath}', 1\n" if keep_filename + expand_require(libpath, sbuf, inlined, level+1) + sbuf << "END_OF_SCRIPT__#{n}\n" if keep_filename + sbuf << "#--end of #{line}" unless remove_comment + end + end + #sbuf << "\n" if sbuf[-1] != ?\n + end + + def local_library?(libpath) + return libpath !~ /^\// + end + + def find_library(libname) + if libname =~ /^\.rb$/ + libname_rb = libname + libname_so = nil + elsif libname =~ /^\.so$/ + libname_rb = nil + libname_so = libname + else + libname_rb = libname + ".rb" + libname_so = libname + ".so" + end + $LOAD_PATH.each do |path| + if libname_rb + libpath = path + "/" + libname_rb + return libpath if test(?f, libpath) + end + if libname_so + libpath = path + "/" + libname_so + return libpath if test(?f, libpath) + end + end + return nil + end + +end + +if __FILE__ == $0 + + begin + require "optparse" + op = OptionParser.new + options = {} + op.on("-h", "--help") {|v| options[:help] = v } + op.on("-I libpath") {|v| options[:libpath] = v } + op.on("-i") {|v| options[:expand_indented] = v } + op.on("-c") {|v| options[:remove_comment] = v } + op.on("-k") {|v| options[:keep_filename] = v } + op.on("-l") {|v| options[:loaded_features] = v } + op.on("-D") {|v| options[:debug] = v } + op.parse!() + + $debug_mode = options[:debug] + + if options[:help] + command = File.basename($0) + puts "Usage: #{command} [-h] [-I path[,path2,..]] script" + puts " -h : help" + puts " -i : expand indented require(), too" + puts " -c : remove comment lines start with '#'" + puts " -k : keep filename (for debugging)" + puts " -l : append libs to $LOADED_FEATURES" + puts " -I path[,path2,...] : ruby library path" + exit(0) + end + + if options[:libpath] + rubylib_paths = options[:libpath].split(/,/) + else + rubylib_paths = [] + end + $stderr.puts "*** debug: rubylib_paths=#{rubylib_paths.inspect}" if $debug_mode + $LOAD_PATH.concat(rubylib_paths) + + filenames = ARGV + + opts = { :expand_indented => options[:expand_indented], + :remove_comment => options[:remove_comment], + :keep_filename => options[:keep_filename], + :loaded_features => options[:loaded_features] } + inline_require = InlineRequire.new(opts) + filenames.each do |filename| + print inline_require.expand(filename) + end + + rescue => ex + if $debug_mode + raise ex + else + $stderr.puts ex.message + end + + end + +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/ActionView.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/ActionView.html new file mode 100644 index 0000000..2f9e153 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/ActionView.html @@ -0,0 +1,105 @@ + + + + + + Module: ActionView + + + + + + + + + + +
    +
    #symbolnamepricechangeratio
    <%= n %> + <%= item['symbol'] %> + + <%= item['name'] %> + + <%= item['price'] %> + <%= item['change'] %><%= item['ratio'] %><%= item['change'] %><%= item['ratio'] %>
    <%= n %> + <%= item['symbol'] %> + + <%= item['name'] %> + + <%= item['price'] %> + <%= item['change'] %><%= item['ratio'] %><%= item['change'] %><%= item['ratio'] %>
    <%= n %> + <%= item['symbol'] %> + + <%= item['name'] %> + + <%= item['price'] %> + <%= item['change'] %><%= item['ratio'] %><%= item['change'] %><%= item['ratio'] %>
    + + + + + + + + + +
    ModuleActionView
    In: + + erubis/helpers/rails_helper.rb + +
    +
    + + + +
    + + + +
    + + + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + +
    + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/ActionView/TemplateHandlers/ErubisHandler.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/ActionView/TemplateHandlers/ErubisHandler.html new file mode 100644 index 0000000..66b3c9b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/ActionView/TemplateHandlers/ErubisHandler.html @@ -0,0 +1,209 @@ + + + + + + Class: ActionView::TemplateHandlers::ErubisHandler + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassActionView::TemplateHandlers::ErubisHandler
    In: + + erubis/helpers/rails_helper.rb + +
    +
    Parent: + TemplateHandler +
    +
    + + +
    + + + +
    + + + +
    + +
    +

    Methods

    + +
    + compile   + compile   + compile   +
    +
    + +
    + + + + + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_helper.rb, line 153
    +          def compile(template)
    +            #src = ::ERB.new("<% __in_erb_template=true %>#{template.source}", nil, erb_trim_mode, '@output_buffer').src
    +            return _convert_template("<% __in_erb_template=true %>#{template.source}")
    +          end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_helper.rb, line 179
    +          def compile(template)
    +            return _convert_template(template.source)   # template.is_a?(ActionView::Template)
    +          end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_helper.rb, line 209
    +          def compile(template)
    +            return _convert_template(template)     # template.is_a?(String)
    +          end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/ERB.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/ERB.html new file mode 100644 index 0000000..93ade5a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/ERB.html @@ -0,0 +1,101 @@ + + + + + + Module: ERB + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleERB
    In: +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis.html new file mode 100644 index 0000000..e5e636a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis.html @@ -0,0 +1,362 @@ + + + + + + Module: Erubis + + + + + + + + + + + + + +
    + + + +
    + +
    +

    +an implementation of eRuby +

    +

    +ex. +

    +
    +  input = <<'END'
    +   <ul>
    +    <% for item in @list %>
    +     <li><%= item %>
    +         <%== item %></li>
    +    <% end %>
    +   </ul>
    +  END
    +  list = ['<aaa>', 'b&b', '"ccc"']
    +  eruby = Erubis::Eruby.new(input)
    +  puts "--- code ---"
    +  puts eruby.src
    +  puts "--- result ---"
    +  context = Erubis::Context.new()   # or new(:list=>list)
    +  context[:list] = list
    +  puts eruby.evaluate(context)
    +
    +

    +result: +

    +
    +  --- source ---
    +  _buf = ''; _buf << '<ul>
    +  ';  for item in @list
    +   _buf << '  <li>'; _buf << ( item ).to_s; _buf << '
    +  '; _buf << '      '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '</li>
    +  ';  end
    +   _buf << '</ul>
    +  ';
    +  _buf.to_s
    +  --- result ---
    +   <ul>
    +     <li><aaa>
    +         &lt;aaa&gt;</li>
    +     <li>b&b
    +         b&amp;b</li>
    +     <li>"ccc"
    +         &quot;ccc&quot;</li>
    +   </ul>
    +
    + +
    + + +
    + + +
    + + + + +
    + +
    +

    Classes and Modules

    + + Module Erubis::ArrayBufferEnhancer
    +Module Erubis::ArrayEnhancer
    +Module Erubis::Basic
    +Module Erubis::BiPatternEnhancer
    +Module Erubis::CGenerator
    +Module Erubis::Converter
    +Module Erubis::CppGenerator
    +Module Erubis::DeleteIndentEnhancer
    +Module Erubis::ErboutEnhancer
    +Module Erubis::EscapeEnhancer
    +Module Erubis::Evaluator
    +Module Erubis::Generator
    +Module Erubis::HeaderFooterEnhancer
    +Module Erubis::Helpers
    +Module Erubis::InterpolationEnhancer
    +Module Erubis::JavaGenerator
    +Module Erubis::JavascriptGenerator
    +Module Erubis::NoCodeEnhancer
    +Module Erubis::NoTextEnhancer
    +Module Erubis::OptimizedGenerator
    +Module Erubis::PI
    +Module Erubis::PercentLineEnhancer
    +Module Erubis::PerlGenerator
    +Module Erubis::PhpGenerator
    +Module Erubis::PrefixedLineEnhancer
    +Module Erubis::PreprocessingHelper
    +Module Erubis::PrintEnabledEnhancer
    +Module Erubis::PrintOutEnhancer
    +Module Erubis::RubyEvaluator
    +Module Erubis::RubyGenerator
    +Module Erubis::SchemeGenerator
    +Module Erubis::SimplifyEnhancer
    +Module Erubis::StdoutEnhancer
    +Module Erubis::StringBufferEnhancer
    +Module Erubis::XmlHelper
    +Class Erubis::ArrayBufferEruby
    +Class Erubis::ArrayEruby
    +Class Erubis::BiPatternEruby
    +Class Erubis::CommandOptionError
    +Class Erubis::Context
    +Class Erubis::DeleteIndentEruby
    +Class Erubis::Ec
    +Class Erubis::Ecpp
    +Class Erubis::Ejava
    +Class Erubis::Ejavascript
    +Class Erubis::Engine
    +Class Erubis::Eperl
    +Class Erubis::Ephp
    +Class Erubis::ErboutEruby
    +Class Erubis::ErubisError
    +Class Erubis::Eruby
    +Class Erubis::EscapedEc
    +Class Erubis::EscapedEcpp
    +Class Erubis::EscapedEjava
    +Class Erubis::EscapedEjavascript
    +Class Erubis::EscapedEperl
    +Class Erubis::EscapedEphp
    +Class Erubis::EscapedEruby
    +Class Erubis::EscapedEscheme
    +Class Erubis::Escheme
    +Class Erubis::FastEruby
    +Class Erubis::HeaderFooterEruby
    +Class Erubis::InterpolationEruby
    +Class Erubis::Main
    +Class Erubis::NoCodeEruby
    +Class Erubis::NoTextEruby
    +Class Erubis::NotSupportedError
    +Class Erubis::OptimizedEruby
    +Class Erubis::OptimizedXmlEruby
    +Class Erubis::PercentLineEruby
    +Class Erubis::PrefixedLineEruby
    +Class Erubis::PreprocessingEruby
    +Class Erubis::PrintEnabledEruby
    +Class Erubis::PrintOutEruby
    +Class Erubis::PrintOutSimplifiedEruby
    +Class Erubis::SimplifiedEruby
    +Class Erubis::StdoutEruby
    +Class Erubis::StdoutSimplifiedEruby
    +Class Erubis::StringBufferEruby
    +Class Erubis::StringIOEruby
    +Class Erubis::TinyEruby
    +Class Erubis::XmlEruby
    + +
    + +
    +

    Constants

    + +
    + + + + + + + + + + + + + + + + + + + + + +
    EMPTY_BINDING=binding()
    Ejs=Ejavascript
    EscapedEjs=EscapedEjavascript
    VERSION=('$Release: 2.7.0 $' =~ /([.\d]+)/) && $1
    +
    +
    + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayBufferEnhancer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayBufferEnhancer.html new file mode 100644 index 0000000..7f193f8 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayBufferEnhancer.html @@ -0,0 +1,175 @@ + + + + + + Module: Erubis::ArrayBufferEnhancer + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::ArrayBufferEnhancer
    In: + + erubis/enhancer.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +use an Array object as buffer (included in Eruby +by default) +

    +

    +this is only for Eruby. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + add_postamble   + add_preamble   +
    +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 191
    +    def add_postamble(src)
    +      src << "\n" unless src[-1] == ?\n
    +      src << "_buf.join\n"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 187
    +    def add_preamble(src)
    +      src << "_buf = [];"
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayBufferEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayBufferEruby.html new file mode 100644 index 0000000..e4ee23a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayBufferEruby.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::ArrayBufferEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::ArrayBufferEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayEnhancer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayEnhancer.html new file mode 100644 index 0000000..e500513 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayEnhancer.html @@ -0,0 +1,174 @@ + + + + + + Module: Erubis::ArrayEnhancer + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::ArrayEnhancer
    In: + + erubis/enhancer.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +return array instead of string +

    +

    +this is only for Eruby. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + add_postamble   + add_preamble   +
    +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 168
    +    def add_postamble(src)
    +      src << "\n" unless src[-1] == ?\n
    +      src << "#{@bufvar}\n"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 164
    +    def add_preamble(src)
    +      src << "#{@bufvar} = [];"
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayEruby.html new file mode 100644 index 0000000..6d0c5d7 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayEruby.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::ArrayEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::ArrayEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Basic.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Basic.html new file mode 100644 index 0000000..068332e --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Basic.html @@ -0,0 +1,112 @@ + + + + + + Module: Erubis::Basic + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::Basic
    In: + + erubis/converter.rb + +
    +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + + +
    + +
    +

    Classes and Modules

    + + Module Erubis::Basic::Converter
    +Class Erubis::Basic::Engine
    + +
    + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Basic/Converter.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Basic/Converter.html new file mode 100644 index 0000000..6ca06db --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Basic/Converter.html @@ -0,0 +1,327 @@ + + + + + + Module: Erubis::Basic::Converter + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::Basic::Converter
    In: + + erubis/converter.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +basic converter which supports ’<% … %>’ notation. +

    + +
    + + +
    + +
    +

    Methods

    + + +
    + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + +
    +

    Constants

    + +
    + + + + + + + + +
    DEFAULT_REGEXP=pattern_regexp('<% %>')  +DEFAULT_REGEXP = /(.*?)(^[ \t]*)?<%(=+|\#)?(.*?)-?%>([ \t]*\r?\n)?/m +DEFAULT_REGEXP = /(^[ \t]*)?<%(=+|\#)?(.*?)-?%>([ \t]*\r?\n)?/m +DEFAULT_REGEXP = /<%(=+|\#)?(.*?)-?%>([ \t]*\r?\n)?/m + +
    +
    +
    + + + +
    +

    Attributes

    + +
    + + + + + + + + + + + +
    pattern [RW] 
    trim [RW] 
    +
    +
    + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    +add expression code to src +

    +

    [Source]

    +
    +
    +# File erubis/converter.rb, line 176
    +    def add_expr(src, code, indicator)
    +      case indicator
    +      when '='
    +        @escape ? add_expr_escaped(src, code) : add_expr_literal(src, code)
    +      when '=='
    +        @escape ? add_expr_literal(src, code) : add_expr_escaped(src, code)
    +      when '==='
    +        add_expr_debug(src, code)
    +      end
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/converter.rb, line 127
    +    def convert_input(src, input)
    +      pat = @pattern
    +      regexp = pat.nil? || pat == '<% %>' ? DEFAULT_REGEXP : pattern_regexp(pat)
    +      pos = 0
    +      is_bol = true     # is beginning of line
    +      input.scan(regexp) do |indicator, code, tailch, rspace|
    +        match = Regexp.last_match()
    +        len  = match.begin(0) - pos
    +        text = input[pos, len]
    +        pos  = match.end(0)
    +        ch   = indicator ? indicator[0] : nil
    +        lspace = ch == ?= ? nil : detect_spaces_at_bol(text, is_bol)
    +        is_bol = rspace ? true : false
    +        add_text(src, text) if text && !text.empty?
    +        ## * when '<%= %>', do nothing
    +        ## * when '<% %>' or '<%# %>', delete spaces iff only spaces are around '<% %>'
    +        if ch == ?=              # <%= %>
    +          rspace = nil if tailch && !tailch.empty?
    +          add_text(src, lspace) if lspace
    +          add_expr(src, code, indicator)
    +          add_text(src, rspace) if rspace
    +        elsif ch == ?\#          # <%# %>
    +          n = code.count("\n") + (rspace ? 1 : 0)
    +          if @trim && lspace && rspace
    +            add_stmt(src, "\n" * n)
    +          else
    +            add_text(src, lspace) if lspace
    +            add_stmt(src, "\n" * n)
    +            add_text(src, rspace) if rspace
    +          end
    +        elsif ch == ?%           # <%% %>
    +          s = "#{lspace}#{@prefix||='<%'}#{code}#{tailch}#{@postfix||='%>'}#{rspace}"
    +          add_text(src, s)
    +        else                     # <% %>
    +          if @trim && lspace && rspace
    +            add_stmt(src, "#{lspace}#{code}#{rspace}")
    +          else
    +            add_text(src, lspace) if lspace
    +            add_stmt(src, code)
    +            add_text(src, rspace) if rspace
    +          end
    +        end
    +      end
    +      #rest = $' || input                        # ruby1.8
    +      rest = pos == 0 ? input : input[pos..-1]   # ruby1.9
    +      add_text(src, rest)
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/converter.rb, line 103
    +    def init_converter(properties={})
    +      super(properties)
    +      @pattern = properties[:pattern]
    +      @trim    = properties[:trim] != false
    +    end
    +
    +
    +
    +
    + +

    Protected Instance methods

    + +
    + + + + +
    +

    +return regexp of pattern to parse eRuby script +

    +

    [Source]

    +
    +
    +# File erubis/converter.rb, line 112
    +    def pattern_regexp(pattern)
    +      @prefix, @postfix = pattern.split()   # '<% %>' => '<%', '%>'
    +      #return /(.*?)(^[ \t]*)?#{@prefix}(=+|\#)?(.*?)-?#{@postfix}([ \t]*\r?\n)?/m
    +      #return /(^[ \t]*)?#{@prefix}(=+|\#)?(.*?)-?#{@postfix}([ \t]*\r?\n)?/m
    +      return /#{@prefix}(=+|-|\#|%)?(.*?)([-=])?#{@postfix}([ \t]*\r?\n)?/m
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Basic/Engine.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Basic/Engine.html new file mode 100644 index 0000000..3562b6f --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Basic/Engine.html @@ -0,0 +1,130 @@ + + + + + + Class: Erubis::Basic::Engine + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::Basic::Engine
    In: + + erubis/engine.rb + +
    +
    Parent: + + Engine + +
    +
    + + +
    + + + +
    + +
    +

    +(abstract) base engine class for Eruby, Eperl, Ejava, and so +on. subclass must include generator. +

    + +
    + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/BiPatternEnhancer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/BiPatternEnhancer.html new file mode 100644 index 0000000..0c78878 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/BiPatternEnhancer.html @@ -0,0 +1,215 @@ + + + + + + Module: Erubis::BiPatternEnhancer + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::BiPatternEnhancer
    In: + + erubis/enhancer.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +enable to use other embedded expression pattern (default is ’\[= +=\]’). +

    +

    +notice! this is an experimental. spec may change in the future. +

    +

    +ex. +

    +
    +  input = <<END
    +  <% for item in list %>
    +    <%= item %> : <%== item %>
    +    [= item =] : [== item =]
    +  <% end %>
    +  END
    +
    +  class BiPatternEruby
    +    include BiPatternEnhancer
    +  end
    +  eruby = BiPatternEruby.new(input, :bipattern=>'\[= =\]')
    +  list = ['<a>', 'b&b', '"c"']
    +  print eruby.result(binding())
    +
    +  ## output
    +    <a> : &lt;a&gt;
    +    <a> : &lt;a&gt;
    +    b&b : b&amp;b
    +    b&b : b&amp;b
    +    "c" : &quot;c&quot;
    +    "c" : &quot;c&quot;
    +
    +

    +this is language independent. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + add_text   + new   +
    +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Class methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 408
    +    def initialize(input, properties={})
    +      self.bipattern = properties[:bipattern]    # or '\$\{ \}'
    +      super
    +    end
    +
    +
    +
    +
    + +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 420
    +    def add_text(src, text)
    +      return unless text
    +      m = nil
    +      text.scan(@bipattern_regexp) do |txt, indicator, code|
    +        m = Regexp.last_match
    +        super(src, txt)
    +        add_expr(src, code, '=' + indicator)
    +      end
    +      #rest = $' || text                    # ruby1.8
    +      rest = m ? text[m.end(0)..-1] : text  # ruby1.9
    +      super(src, rest)
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/BiPatternEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/BiPatternEruby.html new file mode 100644 index 0000000..802420e --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/BiPatternEruby.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::BiPatternEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::BiPatternEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/CGenerator.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/CGenerator.html new file mode 100644 index 0000000..d43a32e --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/CGenerator.html @@ -0,0 +1,386 @@ + + + + + + Module: Erubis::CGenerator + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::CGenerator
    In: + + erubis/engine/ec.rb + +
    +
    +
    + + +
    + + + +
    + + + +
    + +
    +

    Methods

    + + +
    + +
    + + + +
    +

    Included Modules

    + +
    + Generator +
    +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ec.rb, line 72
    +    def add_expr_debug(src, code)
    +      code.strip!
    +      s = nil
    +      if code =~ /\A\".*?\"\s*,\s*(.*)/
    +        s = $1.gsub(/[%"]/, '\\\1') + '='
    +      end
    +      src << @indent if src.empty? || src[-1] == ?\n
    +      src << " fprintf(stderr, \"*** debug: #{s}\" #{code});"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ec.rb, line 67
    +    def add_expr_escaped(src, code)
    +      src << @indent if src.empty? || src[-1] == ?\n
    +      src << ' ' << escaped_expr(code) << ';'
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ec.rb, line 62
    +    def add_expr_literal(src, code)
    +      src << @indent if src.empty? || src[-1] == ?\n
    +      src << " fprintf(#{@out}, " << code.strip << ');'
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ec.rb, line 82
    +    def add_postamble(src)
    +      # empty
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ec.rb, line 30
    +    def add_preamble(src)
    +      src << "#line 1 \"#{self.filename}\"\n" if self.filename
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ec.rb, line 58
    +    def add_stmt(src, code)
    +      src << code
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ec.rb, line 44
    +    def add_text(src, text)
    +      return if text.empty?
    +      src << (src.empty? || src[-1] == ?\n ? @indent : ' ')
    +      src << "fputs("
    +      i = 0
    +      text.each_line do |line|
    +        src << "\n" << @indent << '      ' if i > 0
    +        i += 1
    +        src << '"' << escape_text(line) << '"'
    +      end
    +      src << ", #{@out});"   #<< (text[-1] == ?\n ? "\n" : "")
    +      src << "\n" if text[-1] == ?\n
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ec.rb, line 34
    +    def escape_text(text)
    +      @@table_ ||= { "\r"=>"\\r", "\n"=>"\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" }
    +      text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] }
    +      return text
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ec.rb, line 40
    +    def escaped_expr(code)
    +      return "#{@escapefunc}(#{code.strip}, #{@out})"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ec.rb, line 23
    +    def init_generator(properties={})
    +      super
    +      @escapefunc ||= "escape"
    +      @indent = properties[:indent] || ''
    +      @out = properties[:out] || 'stdout'
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/CommandOptionError.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/CommandOptionError.html new file mode 100644 index 0000000..e5d32a9 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/CommandOptionError.html @@ -0,0 +1,113 @@ + + + + + + Class: Erubis::CommandOptionError + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::CommandOptionError
    In: + + erubis/main.rb + +
    +
    Parent: + + ErubisError + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Context.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Context.html new file mode 100644 index 0000000..f27f40a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Context.html @@ -0,0 +1,344 @@ + + + + + + Class: Erubis::Context + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::Context
    In: + + erubis/context.rb + +
    +
    Parent: + Object +
    +
    + + +
    + + + +
    + +
    +

    +context object for Engine#evaluate +

    +

    +ex. +

    +
    +  template = <<'END'
    +  Hello <%= @user %>!
    +  <% for item in @list %>
    +   - <%= item %>
    +  <% end %>
    +  END
    +
    +  context = Erubis::Context.new(:user=>'World', :list=>['a','b','c'])
    +  # or
    +  # context = Erubis::Context.new
    +  # context[:user] = 'World'
    +  # context[:list] = ['a', 'b', 'c']
    +
    +  eruby = Erubis::Eruby.new(template)
    +  print eruby.evaluate(context)
    +
    + +
    + + +
    + +
    +

    Methods

    + +
    + []   + []=   + each   + keys   + new   + to_hash   + update   +
    +
    + +
    + + + +
    +

    Included Modules

    + +
    + Enumerable +
    +
    + +
    + + + + + + + + + +
    +

    Public Class methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/context.rb, line 33
    +    def initialize(hash=nil)
    +      hash.each do |name, value|
    +        self[name] = value
    +      end if hash
    +    end
    +
    +
    +
    +
    + +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/context.rb, line 39
    +    def [](key)
    +      return instance_variable_get("@#{key}")
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/context.rb, line 43
    +    def []=(key, value)
    +      return instance_variable_set("@#{key}", value)
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/context.rb, line 51
    +    def each
    +      instance_variables.each do |name|
    +        key = name[1..-1]
    +        value = instance_variable_get(name)
    +        yield(key, value)
    +      end
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/context.rb, line 47
    +    def keys
    +      return instance_variables.collect { |name| name[1..-1] }
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/context.rb, line 59
    +    def to_hash
    +      hash = {}
    +      self.keys.each { |key| hash[key] = self[key] }
    +      return hash
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/context.rb, line 65
    +    def update(context_or_hash)
    +      arg = context_or_hash
    +      if arg.is_a?(Hash)
    +        arg.each do |key, val|
    +          self[key] = val
    +        end
    +      else
    +        arg.instance_variables.each do |varname|
    +          key = varname[1..-1]
    +          val = arg.instance_variable_get(varname)
    +          self[key] = val
    +        end
    +      end
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Converter.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Converter.html new file mode 100644 index 0000000..a4b4bfe --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Converter.html @@ -0,0 +1,283 @@ + + + + + + Module: Erubis::Converter + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::Converter
    In: + + erubis/converter.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +convert +

    + +
    + + +
    + +
    +

    Methods

    + + +
    + +
    + + + + +
    + + + + + +
    +

    Attributes

    + +
    + + + + + + + + + + + + + + + + +
    escape [RW] 
    postamble [RW] 
    preamble [RW] 
    +
    +
    + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    +convert input string into target +language +

    +

    [Source]

    +
    +
    +# File erubis/converter.rb, line 33
    +    def convert(input)
    +      codebuf = ""    # or []
    +      @preamble.nil? ? add_preamble(codebuf) : (@preamble && (codebuf << @preamble))
    +      convert_input(codebuf, input)
    +      @postamble.nil? ? add_postamble(codebuf) : (@postamble && (codebuf << @postamble))
    +      @_proc = nil    # clear cached proc object
    +      return codebuf  # or codebuf.join()
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/converter.rb, line 26
    +    def init_converter(properties={})
    +      @preamble  = properties[:preamble]
    +      @postamble = properties[:postamble]
    +      @escape    = properties[:escape]
    +    end
    +
    +
    +
    +
    + +

    Protected Instance methods

    + +
    + + + + +
    +

    +(abstract) convert input to code +

    +

    [Source]

    +
    +
    +# File erubis/converter.rb, line 77
    +    def convert_input(codebuf, input)
    +      not_implemented
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    +detect spaces at beginning of line +

    +

    [Source]

    +
    +
    +# File erubis/converter.rb, line 47
    +    def detect_spaces_at_bol(text, is_bol)
    +      lspace = nil
    +      if text.empty?
    +        lspace = "" if is_bol
    +      elsif text[-1] == ?\n
    +        lspace = ""
    +      else
    +        rindex = text.rindex(?\n)
    +        if rindex
    +          s = text[rindex+1..-1]
    +          if s =~ /\A[ \t]*\z/
    +            lspace = s
    +            #text = text[0..rindex]
    +            text[rindex+1..-1] = ''
    +          end
    +        else
    +          if is_bol && text =~ /\A[ \t]*\z/
    +            #lspace = text
    +            #text = nil
    +            lspace = text.dup
    +            text[0..-1] = ''
    +          end
    +        end
    +      end
    +      return lspace
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/CppGenerator.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/CppGenerator.html new file mode 100644 index 0000000..95213af --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/CppGenerator.html @@ -0,0 +1,382 @@ + + + + + + Module: Erubis::CppGenerator + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::CppGenerator
    In: + + erubis/engine/ecpp.rb + +
    +
    +
    + + +
    + + + +
    + + + +
    + +
    +

    Methods

    + + +
    + +
    + + + +
    +

    Included Modules

    + +
    + Generator +
    +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ecpp.rb, line 72
    +    def add_expr_debug(src, code)
    +      code.strip!
    +      src << @indent if src.empty? || src[-1] == ?\n
    +      src << " std::cerr << \"*** debug: #{code.gsub(/(")/, '\\\&')}=\" << (#{code});"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ecpp.rb, line 67
    +    def add_expr_escaped(src, code)
    +      src << @indent if src.empty? || src[-1] == ?\n
    +      src << ' ' << escaped_expr(code) << ';'
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ecpp.rb, line 62
    +    def add_expr_literal(src, code)
    +      src << @indent if src.empty? || src[-1] == ?\n
    +      src << " _buf << (" << code.strip << ");"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ecpp.rb, line 78
    +    def add_postamble(src)
    +      # empty
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ecpp.rb, line 30
    +    def add_preamble(src)
    +      src << "#line 1 \"#{self.filename}\"\n" if self.filename
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ecpp.rb, line 58
    +    def add_stmt(src, code)
    +      src << code
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ecpp.rb, line 44
    +    def add_text(src, text)
    +      return if text.empty?
    +      src << (src.empty? || src[-1] == ?\n ? @indent : ' ')
    +      src << "_buf << "
    +      i = 0
    +      text.each_line do |line|
    +        src << "\n" << @indent << "        " if i > 0
    +        i += 1
    +        src << '"' << escape_text(line) << '"'
    +      end
    +      src << ";"   #<< (text[-1] == ?\n ? "\n" : "")
    +      src << "\n" if text[-1] == ?\n
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ecpp.rb, line 34
    +    def escape_text(text)
    +      @@table_ ||= { "\r"=>"\\r", "\n"=>"\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" }
    +      text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] }
    +      return text
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ecpp.rb, line 40
    +    def escaped_expr(code)
    +      return "#{@escapefunc}(#{code.strip})"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ecpp.rb, line 23
    +    def init_generator(properties={})
    +      super
    +      @escapefunc ||= "escape"
    +      @indent = properties[:indent] || ''
    +      @bufvar = properties[:bufvar] || '_buf'
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/DeleteIndentEnhancer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/DeleteIndentEnhancer.html new file mode 100644 index 0000000..ce450ef --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/DeleteIndentEnhancer.html @@ -0,0 +1,150 @@ + + + + + + Module: Erubis::DeleteIndentEnhancer + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::DeleteIndentEnhancer
    In: + + erubis/enhancer.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +delete indentation of HTML. +

    +

    +this is language-independent. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + convert_input   +
    +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 622
    +    def convert_input(src, input)
    +      input = input.gsub(/^[ \t]+</, '<')
    +      super(src, input)
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/DeleteIndentEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/DeleteIndentEruby.html new file mode 100644 index 0000000..80720b9 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/DeleteIndentEruby.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::DeleteIndentEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::DeleteIndentEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ec.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ec.html new file mode 100644 index 0000000..9e880ba --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ec.html @@ -0,0 +1,126 @@ + + + + + + Class: Erubis::Ec + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::Ec
    In: + + erubis/engine/ec.rb + +
    +
    Parent: + + Basic::Engine + +
    +
    + + +
    + + + +
    + +
    +

    +engine for C +

    + +
    + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ecpp.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ecpp.html new file mode 100644 index 0000000..a2866fd --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ecpp.html @@ -0,0 +1,126 @@ + + + + + + Class: Erubis::Ecpp + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::Ecpp
    In: + + erubis/engine/ecpp.rb + +
    +
    Parent: + + Basic::Engine + +
    +
    + + +
    + + + +
    + +
    +

    +engine for C +

    + +
    + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ejava.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ejava.html new file mode 100644 index 0000000..6e9e2b3 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ejava.html @@ -0,0 +1,126 @@ + + + + + + Class: Erubis::Ejava + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::Ejava
    In: + + erubis/engine/ejava.rb + +
    +
    Parent: + + Basic::Engine + +
    +
    + + +
    + + + +
    + +
    +

    +engine for Java +

    + +
    + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ejavascript.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ejavascript.html new file mode 100644 index 0000000..e065ab6 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ejavascript.html @@ -0,0 +1,126 @@ + + + + + + Class: Erubis::Ejavascript + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::Ejavascript
    In: + + erubis/engine/ejavascript.rb + +
    +
    Parent: + + Basic::Engine + +
    +
    + + +
    + + + +
    + +
    +

    +engine for JavaScript +

    + +
    + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Engine.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Engine.html new file mode 100644 index 0000000..3d340e4 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Engine.html @@ -0,0 +1,305 @@ + + + + + + Class: Erubis::Engine + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::Engine
    In: + + erubis/engine.rb + +
    +
    Parent: + Object +
    +
    + + +
    + + + +
    + +
    +

    +(abstract) abstract engine class. subclass must include evaluator and +converter module. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + convert!   + load_file   + new   + process   + process_proc   +
    +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Class methods

    + +
    + + + + +
    +

    +load file, write cache file, and return engine object. this method create +code cache file automatically. cachefile name can be specified with +properties[:cachename], or filname + ‘cache’ is used as +default. +

    +

    [Source]

    +
    +
    +# File erubis/engine.rb, line 48
    +    def self.load_file(filename, properties={})
    +      cachename = properties[:cachename] || (filename + '.cache')
    +      properties[:filename] = filename
    +      timestamp = File.mtime(filename)
    +      if test(?f, cachename) && timestamp == File.mtime(cachename)
    +        engine = self.new(nil, properties)
    +        engine.src = File.read(cachename)
    +      else
    +        input = File.open(filename, 'rb') {|f| f.read }
    +        engine = self.new(input, properties)
    +        tmpname = cachename + rand().to_s[1,8]
    +        File.open(tmpname, 'wb') {|f| f.write(engine.src) }
    +        File.rename(tmpname, cachename)
    +        File.utime(timestamp, timestamp, cachename)
    +      end
    +      engine.src.untaint   # ok?
    +      return engine
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    +include Evaluator include Converter include Generator +

    +

    [Source]

    +
    +
    +# File erubis/engine.rb, line 25
    +    def initialize(input=nil, properties={})
    +      #@input = input
    +      init_generator(properties)
    +      init_converter(properties)
    +      init_evaluator(properties)
    +      @src    = convert(input) if input
    +    end
    +
    +
    +
    +
    + +

    Public Instance methods

    + +
    + + + + +
    +

    +convert input string and set it to @src +

    +

    [Source]

    +
    +
    +# File erubis/engine.rb, line 37
    +    def convert!(input)
    +      @src = convert(input)
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    +helper method to convert and evaluate input text with context object. +context may be Binding, Hash, or Object. +

    +

    [Source]

    +
    +
    +# File erubis/engine.rb, line 72
    +    def process(input, context=nil, filename=nil)
    +      code = convert(input)
    +      filename ||= '(erubis)'
    +      if context.is_a?(Binding)
    +        return eval(code, context, filename)
    +      else
    +        context = Context.new(context) if context.is_a?(Hash)
    +        return context.instance_eval(code, filename)
    +      end
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    +helper method evaluate Proc object with contect object. context may be +Binding, Hash, or Object. +

    +

    [Source]

    +
    +
    +# File erubis/engine.rb, line 88
    +    def process_proc(proc_obj, context=nil, filename=nil)
    +      if context.is_a?(Binding)
    +        filename ||= '(erubis)'
    +        return eval(proc_obj, context, filename)
    +      else
    +        context = Context.new(context) if context.is_a?(Hash)
    +        return context.instance_eval(&proc_obj)
    +      end
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Eperl.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Eperl.html new file mode 100644 index 0000000..60c491c --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Eperl.html @@ -0,0 +1,126 @@ + + + + + + Class: Erubis::Eperl + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::Eperl
    In: + + erubis/engine/eperl.rb + +
    +
    Parent: + + Basic::Engine + +
    +
    + + +
    + + + +
    + +
    +

    +engine for Perl +

    + +
    + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ephp.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ephp.html new file mode 100644 index 0000000..8486dd6 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Ephp.html @@ -0,0 +1,126 @@ + + + + + + Class: Erubis::Ephp + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::Ephp
    In: + + erubis/engine/ephp.rb + +
    +
    Parent: + + Basic::Engine + +
    +
    + + +
    + + + +
    + +
    +

    +engine for PHP +

    + +
    + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ErboutEnhancer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ErboutEnhancer.html new file mode 100644 index 0000000..ecc18b0 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ErboutEnhancer.html @@ -0,0 +1,175 @@ + + + + + + Module: Erubis::ErboutEnhancer + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::ErboutEnhancer
    In: + + erubis/enhancer.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +set buffer variable name to ‘_erbout’ as well as +‘_buf‘ +

    +

    +this is only for Eruby. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + add_postamble   + add_preamble   +
    +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 260
    +    def add_postamble(src)
    +      src << "\n" unless src[-1] == ?\n
    +      src << "#{@bufvar}.to_s\n"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 256
    +    def add_preamble(src)
    +      src << "_erbout = #{@bufvar} = '';"
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ErboutEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ErboutEruby.html new file mode 100644 index 0000000..662e9f1 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ErboutEruby.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::ErboutEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::ErboutEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ErubisError.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ErubisError.html new file mode 100644 index 0000000..5e7732b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ErubisError.html @@ -0,0 +1,117 @@ + + + + + + Class: Erubis::ErubisError + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::ErubisError
    In: + + erubis/error.rb + +
    +
    Parent: + StandardError +
    +
    + + +
    + + + +
    + +
    +

    +base error class +

    + +
    + + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Eruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Eruby.html new file mode 100644 index 0000000..c5da50d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Eruby.html @@ -0,0 +1,132 @@ + + + + + + Class: Erubis::Eruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::Eruby
    In: + + erubis/engine/eruby.rb + +
    + + erubis/helpers/rails_helper.rb + +
    +
    Parent: + + Basic::Engine + +
    +
    + + +
    + + + +
    + +
    +

    +engine for Ruby +

    + +
    + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapeEnhancer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapeEnhancer.html new file mode 100644 index 0000000..d32b56d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapeEnhancer.html @@ -0,0 +1,165 @@ + + + + + + Module: Erubis::EscapeEnhancer + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::EscapeEnhancer
    In: + + erubis/enhancer.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +switch ’<%= … %>’ to escaped and ’<%== +… %>’ to unescaped +

    +

    +ex. +

    +
    +  class XmlEruby < Eruby
    +    include EscapeEnhancer
    +  end
    +
    +

    +this is language-indenedent. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + add_expr   +
    +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 37
    +    def add_expr(src, code, indicator)
    +      case indicator
    +      when '='
    +        @escape ? add_expr_literal(src, code) : add_expr_escaped(src, code)
    +      when '=='
    +        @escape ? add_expr_escaped(src, code) : add_expr_literal(src, code)
    +      when '==='
    +        add_expr_debug(src, code)
    +      end
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEc.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEc.html new file mode 100644 index 0000000..b83d688 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEc.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::EscapedEc + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::EscapedEc
    In: + + erubis/engine/ec.rb + +
    +
    Parent: + + Ec + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEcpp.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEcpp.html new file mode 100644 index 0000000..d7065b6 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEcpp.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::EscapedEcpp + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::EscapedEcpp
    In: + + erubis/engine/ecpp.rb + +
    +
    Parent: + + Ecpp + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEjava.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEjava.html new file mode 100644 index 0000000..1a59c7e --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEjava.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::EscapedEjava + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::EscapedEjava
    In: + + erubis/engine/ejava.rb + +
    +
    Parent: + + Ejava + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEjavascript.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEjavascript.html new file mode 100644 index 0000000..d376314 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEjavascript.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::EscapedEjavascript + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::EscapedEjavascript
    In: + + erubis/engine/ejavascript.rb + +
    +
    Parent: + + Ejavascript + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEperl.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEperl.html new file mode 100644 index 0000000..10bdb71 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEperl.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::EscapedEperl + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::EscapedEperl
    In: + + erubis/engine/eperl.rb + +
    +
    Parent: + + Eperl + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEphp.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEphp.html new file mode 100644 index 0000000..e58b86d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEphp.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::EscapedEphp + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::EscapedEphp
    In: + + erubis/engine/ephp.rb + +
    +
    Parent: + + Ephp + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEruby.html new file mode 100644 index 0000000..f9362d6 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEruby.html @@ -0,0 +1,127 @@ + + + + + + Class: Erubis::EscapedEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::EscapedEruby
    In: + + erubis/engine/eruby.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + +
    +

    +swtich ’<%= %>’ to escaped and ’<%== +%>’ to not escaped +

    + +
    + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEscheme.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEscheme.html new file mode 100644 index 0000000..8c5e970 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/EscapedEscheme.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::EscapedEscheme + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::EscapedEscheme
    In: + + erubis/engine/escheme.rb + +
    +
    Parent: + + Escheme + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Escheme.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Escheme.html new file mode 100644 index 0000000..53424ba --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Escheme.html @@ -0,0 +1,126 @@ + + + + + + Class: Erubis::Escheme + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::Escheme
    In: + + erubis/engine/escheme.rb + +
    +
    Parent: + + Basic::Engine + +
    +
    + + +
    + + + +
    + +
    +

    +engine for Scheme +

    + +
    + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Evaluator.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Evaluator.html new file mode 100644 index 0000000..76696e2 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Evaluator.html @@ -0,0 +1,212 @@ + + + + + + Module: Erubis::Evaluator + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::Evaluator
    In: + + erubis/evaluator.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +evaluate code +

    + +
    + + +
    + +
    +

    Methods

    + +
    + evaluate   + init_evaluator   + result   +
    +
    + +
    + + + + +
    + + + + + +
    +

    Attributes

    + +
    + + + + + + + + + + + +
    filename [RW] 
    src [RW] 
    +
    +
    + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/evaluator.rb, line 34
    +    def evaluate(*args)
    +      raise NotSupportedError.new("evaluation of code except Ruby is not supported.")
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/evaluator.rb, line 26
    +    def init_evaluator(properties)
    +      @filename = properties[:filename]
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/evaluator.rb, line 30
    +    def result(*args)
    +      raise NotSupportedError.new("evaluation of code except Ruby is not supported.")
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/FastEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/FastEruby.html new file mode 100644 index 0000000..2585291 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/FastEruby.html @@ -0,0 +1,131 @@ + + + + + + Class: Erubis::FastEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::FastEruby
    In: + + erubis/engine/eruby.rb + +
    + + erubis/helpers/rails_helper.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + +
    +

    +fast engine for Ruby +

    + +
    + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Generator.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Generator.html new file mode 100644 index 0000000..e645550 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Generator.html @@ -0,0 +1,416 @@ + + + + + + Module: Erubis::Generator + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::Generator
    In: + + erubis/generator.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +code generator, called by Converter module +

    + +
    + + +
    + +
    +

    Methods

    + + +
    + +
    + + + + +
    + + + + + +
    +

    Attributes

    + +
    + + + + + + +
    escapefunc [RW] 
    +
    +
    + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    +(abstract) add expression code to src for debug. this is called by +add_expr(). +

    +

    [Source]

    +
    +
    +# File erubis/generator.rb, line 72
    +    def add_expr_debug(src, code)
    +      not_implemented
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    +(abstract) add escaped expression code to src. this is called by +add_expr(). +

    +

    [Source]

    +
    +
    +# File erubis/generator.rb, line 67
    +    def add_expr_escaped(src, code)
    +      not_implemented
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    +(abstract) add expression literal code to src. this is called by +add_expr(). +

    +

    [Source]

    +
    +
    +# File erubis/generator.rb, line 62
    +    def add_expr_literal(src, code)
    +      not_implemented
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    +(abstract) add @postamble to src +

    +

    [Source]

    +
    +
    +# File erubis/generator.rb, line 77
    +    def add_postamble(src)
    +      not_implemented
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    +(abstract) add @preamble to src +

    +

    [Source]

    +
    +
    +# File erubis/generator.rb, line 47
    +    def add_preamble(src)
    +      not_implemented
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    +(abstract) add statement code to src +

    +

    [Source]

    +
    +
    +# File erubis/generator.rb, line 57
    +    def add_stmt(src, code)
    +      not_implemented
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    +(abstract) add text string to src +

    +

    [Source]

    +
    +
    +# File erubis/generator.rb, line 52
    +    def add_text(src, text)
    +      not_implemented
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    +(abstract) escape text string +

    +

    +ex. +

    +
    +  def escape_text(text)
    +    return text.dump
    +    # or return "'" + text.gsub(/['\\]/, '\\\\\&') + "'"
    +  end
    +
    +

    [Source]

    +
    +
    +# File erubis/generator.rb, line 36
    +    def escape_text(text)
    +      not_implemented
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    +return escaped expression code (ex. ‘h(…)’ or +‘htmlspecialchars(…)’) +

    +

    [Source]

    +
    +
    +# File erubis/generator.rb, line 41
    +    def escaped_expr(code)
    +      code.strip!
    +      return "#{@escapefunc}(#{code})"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/generator.rb, line 24
    +    def init_generator(properties={})
    +      @escapefunc = properties[:escapefunc]
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/HeaderFooterEnhancer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/HeaderFooterEnhancer.html new file mode 100644 index 0000000..faf13ae --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/HeaderFooterEnhancer.html @@ -0,0 +1,267 @@ + + + + + + Module: Erubis::HeaderFooterEnhancer + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::HeaderFooterEnhancer
    In: + + erubis/enhancer.rb + +
    +
    +
    + + +
    + + + +
    + +
    +
    +
    experimental
    allow header and footer in eRuby script + +
    +
    +

    +ex. +

    +
    +  ====================
    +  ## without header and footer
    +  $ cat ex1.eruby
    +  <% def list_items(list) %>
    +  <%   for item in list %>
    +  <li><%= item %></li>
    +  <%   end %>
    +  <% end %>
    +
    +  $ erubis -s ex1.eruby
    +  _buf = []; def list_items(list)
    +  ;   for item in list
    +  ; _buf << '<li>'; _buf << ( item ).to_s; _buf << '</li>
    +  ';   end
    +  ; end
    +  ;
    +  _buf.join
    +
    +  ## with header and footer
    +  $ cat ex2.eruby
    +  <!--#header:
    +  def list_items(list)
    +   #-->
    +  <%  for item in list %>
    +  <li><%= item %></li>
    +  <%  end %>
    +  <!--#footer:
    +  end
    +   #-->
    +
    +  $ erubis -s -c HeaderFooterEruby ex4.eruby
    +
    +  def list_items(list)
    +   _buf = []; _buf << '
    +  ';  for item in list
    +  ; _buf << '<li>'; _buf << ( item ).to_s; _buf << '</li>
    +  ';  end
    +  ; _buf << '
    +  ';
    +  _buf.join
    +  end
    +
    +  ====================
    +
    +

    +this is language-independent. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + add_text   + convert   +
    +
    + +
    + + + + +
    + + +
    +

    Constants

    + +
    + + + + + + +
    HEADER_FOOTER_PATTERN=/(.*?)(^[ \t]*)?<!--\#(\w+):(.*?)\#-->([ \t]*\r?\n)?/m
    +
    +
    + + + +
    +

    Attributes

    + +
    + + + + + + + + + + + +
    footer [RW] 
    header [RW] 
    +
    +
    + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 585
    +    def add_text(src, text)
    +      m = nil
    +      text.scan(HEADER_FOOTER_PATTERN) do |txt, lspace, word, content, rspace|
    +        m = Regexp.last_match
    +        flag_trim = @trim && lspace && rspace
    +        super(src, txt)
    +        content = "#{lspace}#{content}#{rspace}" if flag_trim
    +        super(src, lspace) if !flag_trim && lspace
    +        instance_variable_set("@#{word}", content)
    +        super(src, rspace) if !flag_trim && rspace
    +      end
    +      #rest = $' || text                    # ruby1.8
    +      rest = m ? text[m.end(0)..-1] : text  # ruby1.9
    +      super(src, rest)
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 603
    +    def convert(input)
    +      source = super
    +      return @src = "#{@header}#{source}#{@footer}"
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/HeaderFooterEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/HeaderFooterEruby.html new file mode 100644 index 0000000..465ac8b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/HeaderFooterEruby.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::HeaderFooterEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::HeaderFooterEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Helpers.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Helpers.html new file mode 100644 index 0000000..8079c6b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Helpers.html @@ -0,0 +1,116 @@ + + + + + + Module: Erubis::Helpers + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::Helpers
    In: + + erubis/helpers/rails_form_helper.rb + +
    + + erubis/helpers/rails_helper.rb + +
    +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + + +
    + +
    +

    Classes and Modules

    + + Module Erubis::Helpers::RailsFormHelper
    +Module Erubis::Helpers::RailsHelper
    + +
    + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Helpers/RailsFormHelper.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Helpers/RailsFormHelper.html new file mode 100644 index 0000000..a282eb1 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Helpers/RailsFormHelper.html @@ -0,0 +1,787 @@ + + + + + + Module: Erubis::Helpers::RailsFormHelper + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::Helpers::RailsFormHelper
    In: + + erubis/helpers/rails_form_helper.rb + +
    +
    +
    + + + + + + + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 106
    +  def _pp_check_box_checked?(value, checked_value)
    +    return ActionView::Helpers::InstanceTag::check_box_checked?(value, checked_value)
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 46
    +  def _pp_error_tags(value)
    +    return value ? ['<div class="fieldWithErrors">', '</div>'] : ['', '']
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 117
    +  def _pp_radio_button_checked?(value, tag_value)
    +    return ActionView::Helpers::InstanceTag::radio_button_checked?(value, tag_value)
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 50
    +  def _pp_remove_error_div(s)
    +    s.sub!(/\A<div class="fieldWithErrors">(.*)<\/div>\z/, '\1')
    +    return s
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 121
    +  def _pp_select(object, method, collection, priority_collection, options={}, html_options={})
    +    return pp_error_on(object, method) do
    +      s = ""
    +      ## start tag
    +      s << "<select id=\"#{object}_#{method}\" name=\"#{object}[#{method}]\""
    +      for key, val in html_options:
    +          s << " #{key}=\"#{val}\""
    +      end
    +      s << ">\n"
    +      ## selected table
    +      key = options.key?(:value) ? :value : (options.key?('value') ? 'value' : nil)
    +      if    key.nil?                ;  selected = "@#{object}.#{method}"
    +      elsif (val=options[key]).nil? ;  selected = nil
    +      elsif val =~ /\A<%=(.*)%>\z/  ;  selected = $1
    +      else                          ;  selected = val.inspect
    +      end
    +      s << "<% _table = {#{selected}=>' selected=\"selected\"'} %>\n" if selected
    +      ## <option> tags
    +      if options[:include_blank] || options['include_blank']
    +        s << "<option value=\"\"></option>\n"
    +      end
    +      unless priority_collection.blank?
    +        _pp_select_options(s, priority_collection, selected, 'delete')
    +        s << "<option value=\"\">-------------</option>\n"
    +      end
    +      _pp_select_options(s, collection, selected, '[]')
    +      ## end tag
    +      s << "</select>"
    +      s
    +    end
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 153
    +  def _pp_select_options(s, collection, selected, operator)
    +    for item in collection
    +      value, text = item.is_a?(Array) ? item : [item, item]
    +      if !selected
    +        t = ''
    +      elsif operator == 'delete'
    +        t = "<%= _table.delete(#{value.inspect}) %>"
    +      else
    +        t = "<%= _table[#{value.inspect}] %>"
    +      end
    +      s << "<option value=\"#{h value}\"#{t}>#{h text}</option>\n"
    +    end
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 99
    +  def pp_check_box(object_name, method, options={}, checked_value="1", unchecked_value="0")
    +    s = check_box(object_name, method, options, checked_value, unchecked_value)
    +    s.sub!(/\schecked=\"checked\"/, '')
    +    s.sub!(/type="checkbox"/, "\\&<%= _pp_check_box_checked?(@#{object_name}.#{method}, #{checked_value.inspect}) ? ' checked=\"checked\"' : '' %>")
    +    return pp_error_on(object_name, method) { _pp_remove_error_div(s) }
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 171
    +  def pp_collection_select(object, method, collection, value_method, text_method, options={}, html_options={})
    +    collection2 = collection.collect { |e|
    +      [e.__send__(value_method), e.__send__(text_method)]
    +    }
    +    return _pp_select(object, method, collection2, nil, options, html_options)
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 178
    +  def pp_country_select(object, method, priority_countries=nil, options={}, html_options={})
    +    collection = ActionView::Helpers::FormOptionsHelper::COUNTRIES
    +    return _pp_select(object, method, collection, priority_countries, options, html_options)
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 37
    +  def pp_error_on(object_name, method)
    +    s = ''
    +    s << "<% _stag, _etag = _pp_error_tags(@#{object_name}.errors.on('#{method}')) %>"
    +    s << "<%= _stag %>"
    +    s << yield(object_name, method)
    +    s << "<%= _etag %>"
    +    return s
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 91
    +  def pp_file_field(object_name, method, options={})
    +    return pp_tag_helper(:file_field, object_name, method, options)
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 69
    +  def pp_form_tag(url_for_options={}, options={}, *parameters_for_url, &block)
    +    return form_tag(url_for_options, options, *parameters_for_url, &block)
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 87
    +  def pp_hidden_field(object_name, method, options={})
    +    return pp_tag_helper(:hidden_field, object_name, method, options)
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 193
    +  def pp_image_submit_tag(source, options={})
    +    return image_submit_tag(source, options)
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 83
    +  def pp_password_field(object_name, method, options={})
    +    return pp_tag_helper(:password_field, object_name, method, options)
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 110
    +  def pp_radio_button(object_name, method, tag_value, options={})
    +    s = radio_button(object_name, method, tag_value, options)
    +    s.sub!(/\schecked=\"checked\"/, '')
    +    s.sub!(/type="radio"/, "\\&<%= _pp_radio_button_checked?(@#{object_name}.#{method}, #{tag_value.inspect}) ? ' checked=\"checked\"' : '' %>")
    +    return pp_error_on(object_name, method) { _pp_remove_error_div(s) }
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 30
    +  def pp_render_partial(basename)
    +    basename = "_#{basename}" unless basename[0] == ?_
    +    filename = pp_template_filename(basename)
    +    preprocessor = _create_preprocessor(File.read(filename))
    +    return preprocessor.evaluate(_preprocessing_context_object())
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 167
    +  def pp_select(object, method, collection, options={}, html_options={})
    +    return _pp_select(object, method, collection, nil, options, html_options)
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 189
    +  def pp_submit_tag(value="Save changes", options={})
    +    return submit_tag(value, options)
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 55
    +  def pp_tag_helper(helper, object_name, method, options={})
    +    if object_name.is_a?(ActionView::Helpers::FormHelper)
    +      object_name = object_name.object_name
    +    end
    +    unless options.key?(:value) || options.key?('value')
    +      options['value'] = _?("h @#{object_name}.#{method}")
    +    end
    +    #$stderr.puts "*** debug: pp_tag_helper(): options=#{options.inspect}"
    +    return pp_error_on(object_name, method) {
    +      s = __send__(helper, object_name, method, options)
    +      _pp_remove_error_div(s)
    +    }
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 23
    +  def pp_template_filename(basename)
    +    fname = "#{RAILS_ROOT}/app/views/#{controller.controller_name}/#{basename}.html.erb"
    +    return fname if test(?f, fname)
    +    return  "#{RAILS_ROOT}/app/views/#{controller.controller_name}/#{basename}.rhtml"
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 19
    +  def pp_template_filename(basename)
    +    return "#{RAILS_ROOT}/app/views/#{controller.controller_name}/#{basename}.rhtml"
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 95
    +  def pp_text_area(object_name, method, options={})
    +    return pp_tag_helper(:text_area, object_name, method, options)
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 79
    +  def pp_text_field(object_name, method, options={})
    +    return pp_tag_helper(:text_field, object_name, method, options)
    +  end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_form_helper.rb, line 183
    +  def pp_time_zone_select(object, method, priority_zones=nil, options={}, html_options={})
    +    model = options[:model] || options['model'] || TimeZone
    +    collection = model.all.collect { |e| [e.name, e.to_s] }
    +    return _pp_select(object, method, collection, priority_zones, options, html_options)
    +  end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Helpers/RailsHelper.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Helpers/RailsHelper.html new file mode 100644 index 0000000..e1829c1 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Helpers/RailsHelper.html @@ -0,0 +1,349 @@ + + + + + + Module: Erubis::Helpers::RailsHelper + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::Helpers::RailsHelper
    In: + + erubis/helpers/rails_helper.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +helper module for Ruby on Rails +

    +

    +howto: +

    +
      +
    1. add the folliwng code in your ‘config/environment.rb‘ + +
      +  require 'erubis/helpers/rails_helper'
      +  #Erubis::Helpers::RailsHelper.engine_class = Erubis::Eruby # or Erubis::FastEruby
      +  #Erubis::Helpers::RailsHelper.init_properties = {}
      +  #Erubis::Helpers::RailsHelper.show_src = false       # set true for debugging
      +  #Erubis::Helpers::RailsHelper.preprocessing = true   # set true to enable preprocessing
      +
      +
    2. +
    3. restart web server. + +
    4. +
    +

    +if Erubis::Helper::Rails.show_src is true, Erubis prints converted Ruby code into log +file (‘log/development.log’ or so). if false, it doesn‘t. +if nil, Erubis prints converted Ruby code +if ENV[‘RAILS_ENV’] == ‘development’. +

    + +
    + + +
    + +
    +

    Methods

    + + +
    + +
    + + + + +
    + +
    +

    Classes and Modules

    + + Module Erubis::Helpers::RailsHelper::TemplateConverter
    + +
    + + + + + + + + +
    +

    Public Class methods

    + +
    + + + + +
    +

    +@@engine_class = ::Erubis::FastEruby +

    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_helper.rb, line 47
    +      def self.engine_class
    +        @@engine_class
    +      end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_helper.rb, line 50
    +      def self.engine_class=(klass)
    +        @@engine_class = klass
    +      end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_helper.rb, line 56
    +      def self.init_properties
    +        @@init_properties
    +      end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_helper.rb, line 59
    +      def self.init_properties=(hash)
    +        @@init_properties = hash
    +      end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_helper.rb, line 74
    +      def self.preprocessing
    +        @@preprocessing
    +      end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_helper.rb, line 77
    +      def self.preprocessing=(flag)
    +        @@preprocessing = flag
    +      end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_helper.rb, line 65
    +      def self.show_src
    +        @@show_src
    +      end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_helper.rb, line 68
    +      def self.show_src=(flag)
    +        @@show_src = flag
    +      end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html new file mode 100644 index 0000000..0256059 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html @@ -0,0 +1,213 @@ + + + + + + Module: Erubis::Helpers::RailsHelper::TemplateConverter + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::Helpers::RailsHelper::TemplateConverter
    In: + + erubis/helpers/rails_helper.rb + +
    +
    +
    + + +
    + + + +
    + + + +
    + + + +
    + + + + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_helper.rb, line 107
    +        def _create_preprocessor(template)
    +          return PreprocessingEruby.new(template, :escape=>true)
    +        end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_helper.rb, line 113
    +        def _logger_info(message)
    +          logger.info message
    +        end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_helper.rb, line 164
    +      def _logger_info(message)
    +        #logger.info message   # logger.info seems not available in Rails 2.2
    +        ActionController::Base.new.logger.info message
    +      end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helpers/rails_helper.rb, line 110
    +        def _preprocessing_context_object
    +          return self
    +        end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/InterpolationEnhancer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/InterpolationEnhancer.html new file mode 100644 index 0000000..877de9b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/InterpolationEnhancer.html @@ -0,0 +1,305 @@ + + + + + + Module: Erubis::InterpolationEnhancer + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::InterpolationEnhancer
    In: + + erubis/enhancer.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +convert "<h1><%=title%></h1>" into "_buf +<< %Q`<h1>#{title}</h1>`" +

    +

    +this is only for Eruby. +

    + +
    + + +
    + +
    +

    Methods

    + + +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 707
    +    def _add_text_to_str(str, text)
    +      return if !text || text.empty?
    +      str << text.gsub(/[`\#\\]/, '\\\\\&')
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 712
    +    def add_expr_escaped(str, code)
    +      str << "\#{#{escaped_expr(code)}}"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 716
    +    def add_expr_literal(str, code)
    +      str << "\#{#{code}}"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 696
    +    def add_text(src, text)
    +      return if !text || text.empty?
    +      #src << " _buf << %Q`" << text << "`;"
    +      if text[-1] == ?\n
    +        text[-1] = "\\n"
    +        src << " #{@bufvar} << %Q`#{text}`\n"
    +      else
    +        src << " #{@bufvar} << %Q`#{text}`;"
    +      end
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 641
    +    def convert_input(src, input)
    +      pat = @pattern
    +      regexp = pat.nil? || pat == '<% %>' ? Basic::Converter::DEFAULT_REGEXP : pattern_regexp(pat)
    +      pos = 0
    +      is_bol = true     # is beginning of line
    +      str = ''
    +      input.scan(regexp) do |indicator, code, tailch, rspace|
    +        match = Regexp.last_match()
    +        len  = match.begin(0) - pos
    +        text = input[pos, len]
    +        pos  = match.end(0)
    +        ch   = indicator ? indicator[0] : nil
    +        lspace = ch == ?= ? nil : detect_spaces_at_bol(text, is_bol)
    +        is_bol = rspace ? true : false
    +        _add_text_to_str(str, text)
    +        ## * when '<%= %>', do nothing
    +        ## * when '<% %>' or '<%# %>', delete spaces iff only spaces are around '<% %>'
    +        if ch == ?=              # <%= %>
    +          rspace = nil if tailch && !tailch.empty?
    +          str << lspace if lspace
    +          add_expr(str, code, indicator)
    +          str << rspace if rspace
    +        elsif ch == ?\#          # <%# %>
    +          n = code.count("\n") + (rspace ? 1 : 0)
    +          if @trim && lspace && rspace
    +            add_text(src, str)
    +            str = ''
    +            add_stmt(src, "\n" * n)
    +          else
    +            str << lspace if lspace
    +            add_text(src, str)
    +            str = ''
    +            add_stmt(src, "\n" * n)
    +            str << rspace if rspace
    +          end
    +        else                     # <% %>
    +          if @trim && lspace && rspace
    +            add_text(src, str)
    +            str = ''
    +            add_stmt(src, "#{lspace}#{code}#{rspace}")
    +          else
    +            str << lspace if lspace
    +            add_text(src, str)
    +            str = ''
    +            add_stmt(src, code)
    +            str << rspace if rspace
    +          end
    +        end
    +      end
    +      #rest = $' || input                       # ruby1.8
    +      rest = pos == 0 ? input : input[pos..-1]  # ruby1.9
    +      _add_text_to_str(str, rest)
    +      add_text(src, str)
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/InterpolationEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/InterpolationEruby.html new file mode 100644 index 0000000..8716d80 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/InterpolationEruby.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::InterpolationEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::InterpolationEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/JavaGenerator.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/JavaGenerator.html new file mode 100644 index 0000000..29db5b8 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/JavaGenerator.html @@ -0,0 +1,359 @@ + + + + + + Module: Erubis::JavaGenerator + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::JavaGenerator
    In: + + erubis/engine/ejava.rb + +
    +
    +
    + + +
    + + + +
    + + + +
    + +
    +

    Methods

    + + +
    + +
    + + + +
    +

    Included Modules

    + +
    + Generator +
    +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejava.rb, line 68
    +    def add_expr_debug(src, code)
    +      code.strip!
    +      src << @indent if src.empty? || src[-1] == ?\n
    +      src << " System.err.println(\"*** debug: #{code}=\"+(#{code}));"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejava.rb, line 64
    +    def add_expr_escaped(src, code)
    +      add_expr_literal(src, escaped_expr(code))
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejava.rb, line 58
    +    def add_expr_literal(src, code)
    +      src << @indent if src.empty? || src[-1] == ?\n
    +      code.strip!
    +      src << " #{@bufvar}.append(#{code});"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejava.rb, line 74
    +    def add_postamble(src)
    +      src << "\n" if src[-1] == ?;
    +      src << @indent << "return " << @bufvar << ".toString();\n"
    +      #src << @indent << "System.out.print(" << @bufvar << ".toString());\n"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejava.rb, line 32
    +    def add_preamble(src)
    +      src << "#{@indent}#{@bufclass} #{@bufvar} = new #{@bufclass}();"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejava.rb, line 54
    +    def add_stmt(src, code)
    +      src << code
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejava.rb, line 41
    +    def add_text(src, text)
    +      return if text.empty?
    +      src << (src.empty? || src[-1] == ?\n ? @indent : ' ')
    +      src << @bufvar << ".append("
    +      i = 0
    +      text.each_line do |line|
    +        src << "\n" << @indent << '          + ' if i > 0
    +        i += 1
    +        src << '"' << escape_text(line) << '"'
    +      end
    +      src << ");" << (text[-1] == ?\n ? "\n" : "")
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejava.rb, line 36
    +    def escape_text(text)
    +      @@table_ ||= { "\r"=>"\\r", "\n"=>"\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" }
    +      return text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] } || text
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejava.rb, line 24
    +    def init_generator(properties={})
    +      super
    +      @escapefunc ||= 'escape'
    +      @indent = properties[:indent] || ''
    +      @bufvar = properties[:bufvar] || '_buf'
    +      @bufclass = properties[:bufclass] || 'StringBuffer'
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/JavascriptGenerator.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/JavascriptGenerator.html new file mode 100644 index 0000000..5ec28da --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/JavascriptGenerator.html @@ -0,0 +1,386 @@ + + + + + + Module: Erubis::JavascriptGenerator + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::JavascriptGenerator
    In: + + erubis/engine/ejavascript.rb + +
    +
    +
    + + +
    + + + +
    + + + +
    + +
    +

    Methods

    + + +
    + +
    + + + +
    +

    Included Modules

    + +
    + Generator +
    +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejavascript.rb, line 72
    +    def add_expr_debug(src, code)
    +      add_indent(src, @indent)
    +      code.strip!
    +      src << "alert(\"*** debug: #{code}=\"+(#{code}));"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejavascript.rb, line 68
    +    def add_expr_escaped(src, code)
    +      add_expr_literal(src, escaped_expr(code))
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejavascript.rb, line 62
    +    def add_expr_literal(src, code)
    +      add_indent(src, @indent)
    +      code.strip!
    +      src << "#{@bufvar}.push(#{code});"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejavascript.rb, line 41
    +    def add_indent(src, indent)
    +      src << (src.empty? || src[-1] == ?\n ? indent : ' ')
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejavascript.rb, line 78
    +    def add_postamble(src)
    +      src << "\n" if src[-1] == ?;
    +      if @docwrite
    +        src << @indent << 'document.write(' << @bufvar << ".join(\"\"));\n"
    +      else
    +        src << @indent << @bufvar << ".join(\"\");\n"
    +      end
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejavascript.rb, line 32
    +    def add_preamble(src)
    +      src << "#{@indent}var #{@bufvar} = [];"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejavascript.rb, line 58
    +    def add_stmt(src, code)
    +      src << code
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejavascript.rb, line 45
    +    def add_text(src, text)
    +      return if text.empty?
    +      add_indent(src, @indent)
    +      src << @bufvar << '.push("'
    +      s = escape_text(text)
    +      if s[-1] == ?\n
    +        s[-2, 2] = ''
    +        src << s << "\");\n"
    +      else
    +        src << s << "\");"
    +      end
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejavascript.rb, line 36
    +    def escape_text(text)
    +      @@table_ ||= { "\r"=>"\\r", "\n"=>"\\n\\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" }
    +      return text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] } || text
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejavascript.rb, line 24
    +    def init_generator(properties={})
    +      super
    +      @escapefunc ||= 'escape'
    +      @indent = properties[:indent] || ''
    +      @bufvar = properties[:bufvar] || '_buf'
    +      @docwrite = properties[:docwrite] != false  # '!= false' will be removed in the next release
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Main.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Main.html new file mode 100644 index 0000000..8a14c5d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Main.html @@ -0,0 +1,341 @@ + + + + + + Class: Erubis::Main + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::Main
    In: + + erubis/main.rb + +
    +
    Parent: + Object +
    +
    + + +
    + + + +
    + +
    +

    +main class of command +

    +

    +ex. +

    +
    +  Main.main(ARGV)
    +
    + +
    + + +
    + +
    +

    Methods

    + +
    + execute   + main   + new   +
    +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Class methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/main.rb, line 40
    +    def self.main(argv=ARGV)
    +      status = 0
    +      begin
    +        Main.new.execute(ARGV)
    +      rescue CommandOptionError => ex
    +        $stderr.puts ex.message
    +        status = 1
    +      end
    +      exit(status)
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/main.rb, line 51
    +    def initialize
    +      @single_options = "hvxztTSbeBXNUC"
    +      @arg_options    = "pcrfKIlaE" #C
    +      @option_names   = {
    +        'h' => :help,
    +        'v' => :version,
    +        'x' => :source,
    +        'z' => :syntax,
    +        'T' => :unexpand,
    +        't' => :untabify,      # obsolete
    +        'S' => :intern,
    +        'b' => :bodyonly,
    +        'B' => :binding,
    +        'p' => :pattern,
    +        'c' => :context,
    +        #'C' => :class,
    +        'e' => :escape,
    +        'r' => :requires,
    +        'f' => :datafiles,
    +        'K' => :kanji,
    +        'I' => :includes,
    +        'l' => :lang,
    +        'a' => :action,
    +        'E' => :enhancers,
    +        'X' => :notext,
    +        'N' => :linenum,
    +        'U' => :unique,
    +        'C' => :compact,
    +      }
    +      assert unless @single_options.length + @arg_options.length == @option_names.length
    +      (@single_options + @arg_options).each_byte do |ch|
    +        assert unless @option_names.key?(ch.chr)
    +      end
    +    end
    +
    +
    +
    +
    + +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/main.rb, line 87
    +    def execute(argv=ARGV)
    +      ## parse command-line options
    +      options, properties = parse_argv(argv, @single_options, @arg_options)
    +      filenames = argv
    +      options['h'] = true if properties[:help]
    +      opts = Object.new
    +      arr = @option_names.collect {|ch, name| "def #{name}; @#{name}; end\n" }
    +      opts.instance_eval arr.join
    +      options.each do |ch, val|
    +        name = @option_names[ch]
    +        opts.instance_variable_set("@#{name}", val)
    +      end
    +
    +      ## help, version, enhancer list
    +      if opts.help || opts.version
    +        puts version()         if opts.version
    +        puts usage()           if opts.help
    +        puts show_properties() if opts.help
    +        puts show_enhancers()  if opts.help
    +        return
    +      end
    +
    +      ## include path
    +      opts.includes.split(/,/).each do |path|
    +        $: << path
    +      end if opts.includes
    +
    +      ## require library
    +      opts.requires.split(/,/).each do |library|
    +        require library
    +      end if opts.requires
    +
    +      ## action
    +      action = opts.action
    +      action ||= 'syntax'  if opts.syntax
    +      action ||= 'convert' if opts.source || opts.notext
    +
    +      ## lang
    +      lang = opts.lang || 'ruby'
    +      action ||= 'convert' if opts.lang
    +
    +      ## class name of Eruby
    +      #classname = opts.class
    +      classname = nil
    +      klass = get_classobj(classname, lang, properties[:pi])
    +
    +      ## kanji code
    +      $KCODE = opts.kanji if opts.kanji
    +
    +      ## read context values from yaml file
    +      datafiles = opts.datafiles
    +      context = load_datafiles(datafiles, opts)
    +
    +      ## parse context data
    +      if opts.context
    +        context = parse_context_data(opts.context, opts)
    +      end
    +
    +      ## properties for engine
    +      properties[:escape]   = true         if opts.escape && !properties.key?(:escape)
    +      properties[:pattern]  = opts.pattern if opts.pattern
    +      #properties[:trim]     = false        if opts.notrim
    +      properties[:preamble] = properties[:postamble] = false if opts.bodyonly
    +      properties[:pi]       = nil          if properties[:pi] == true
    +
    +      ## create engine and extend enhancers
    +      engine = klass.new(nil, properties)
    +      enhancers = get_enhancers(opts.enhancers)
    +      #enhancers.push(Erubis::EscapeEnhancer) if opts.escape
    +      enhancers.each do |enhancer|
    +        engine.extend(enhancer)
    +        engine.bipattern = properties[:bipattern] if enhancer == Erubis::BiPatternEnhancer
    +      end
    +
    +      ## no-text
    +      engine.extend(Erubis::NoTextEnhancer) if opts.notext
    +
    +      ## convert and execute
    +      val = nil
    +      msg = "Syntax OK\n"
    +      if filenames && !filenames.empty?
    +        filenames.each do |filename|
    +          File.file?(filename)  or
    +            raise CommandOptionError.new("#{filename}: file not found.")
    +          engine.filename = filename
    +          engine.convert!(File.read(filename))
    +          val = do_action(action, engine, context, filename, opts)
    +          msg = nil if val
    +        end
    +      else
    +        engine.filename = filename = '(stdin)'
    +        engine.convert!($stdin.read())
    +        val = do_action(action, engine, context, filename, opts)
    +        msg = nil if val
    +      end
    +      print msg if action == 'syntax' && msg
    +
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NoCodeEnhancer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NoCodeEnhancer.html new file mode 100644 index 0000000..25765a0 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NoCodeEnhancer.html @@ -0,0 +1,249 @@ + + + + + + Module: Erubis::NoCodeEnhancer + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::NoCodeEnhancer
    In: + + erubis/enhancer.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +remove code and leave text, especially useful when validating HTML tags. +

    +

    +ex. +

    +
    +  $ erubis -s -E NoCode file.eruby | tidy -errors
    +
    +

    +this is language independent. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + add_expr   + add_postamble   + add_preamble   + add_stmt   + add_text   +
    +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 317
    +    def add_expr(src, code, indicator)
    +      src << "\n" * code.count("\n")
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 310
    +    def add_postamble(src)
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 307
    +    def add_preamble(src)
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 321
    +    def add_stmt(src, code)
    +      src << "\n" * code.count("\n")
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 313
    +    def add_text(src, text)
    +      src << text
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NoCodeEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NoCodeEruby.html new file mode 100644 index 0000000..f52b4d0 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NoCodeEruby.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::NoCodeEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::NoCodeEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NoTextEnhancer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NoTextEnhancer.html new file mode 100644 index 0000000..feaf9d6 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NoTextEnhancer.html @@ -0,0 +1,159 @@ + + + + + + Module: Erubis::NoTextEnhancer + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::NoTextEnhancer
    In: + + erubis/enhancer.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +remove text and leave code, especially useful when debugging. +

    +

    +ex. +

    +
    +  $ erubis -s -E NoText file.eruby | more
    +
    +

    +this is language independent. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + add_text   +
    +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 282
    +    def add_text(src, text)
    +      src << ("\n" * text.count("\n"))
    +      if text[-1] != ?\n
    +        text =~ /^(.*?)\z/
    +        src << (' ' * $1.length)
    +      end
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NoTextEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NoTextEruby.html new file mode 100644 index 0000000..c6094c0 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NoTextEruby.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::NoTextEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::NoTextEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NotSupportedError.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NotSupportedError.html new file mode 100644 index 0000000..c3c75b7 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/NotSupportedError.html @@ -0,0 +1,119 @@ + + + + + + Class: Erubis::NotSupportedError + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::NotSupportedError
    In: + + erubis/error.rb + +
    +
    Parent: + + ErubisError + +
    +
    + + +
    + + + +
    + +
    +

    +raised when method or function is not supported +

    + +
    + + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/OptimizedEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/OptimizedEruby.html new file mode 100644 index 0000000..6bb2640 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/OptimizedEruby.html @@ -0,0 +1,163 @@ + + + + + + Class: Erubis::OptimizedEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::OptimizedEruby
    In: + + erubis/engine/optimized.rb + +
    +
    Parent: + + Basic::Engine + +
    +
    + + +
    + + + +
    + +
    +

    +Eruby class which generates optimized ruby code +

    + +
    + + +
    + +
    +

    Methods

    + +
    + init_converter   +
    +
    + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/optimized.rb, line 106
    +    def init_converter(properties={})
    +      @pi = 'rb'
    +      super(properties)
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/OptimizedGenerator.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/OptimizedGenerator.html new file mode 100644 index 0000000..2021490 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/OptimizedGenerator.html @@ -0,0 +1,439 @@ + + + + + + Module: Erubis::OptimizedGenerator + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::OptimizedGenerator
    In: + + erubis/engine/optimized.rb + +
    +
    +
    + + +
    + + + +
    + + + +
    + +
    +

    Methods

    + + +
    + +
    + + + +
    +

    Included Modules

    + +
    + Generator +
    +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/optimized.rb, line 20
    +    def init_generator(properties={})
    +      super
    +      @escapefunc ||= "Erubis::XmlHelper.escape_xml"
    +      @initialized = false
    +      @prev_is_expr = false
    +    end
    +
    +
    +
    +
    + +

    Protected Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/optimized.rb, line 85
    +    def add_expr_debug(src, code)
    +      code.strip!
    +      s = (code.dump =~ /\A"(.*)"\z/) && $1
    +      src << ' $stderr.puts("*** debug: ' << s << '=#{(' << code << ').inspect}");'
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/optimized.rb, line 79
    +    def add_expr_escaped(src, code)
    +      unless @initialized; src << "_buf = ''"; @initialized = true; end
    +      switch_to_expr(src)
    +      src << " << " << escaped_expr(code)
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/optimized.rb, line 73
    +    def add_expr_literal(src, code)
    +      unless @initialized; src << "_buf = ''"; @initialized = true; end
    +      switch_to_expr(src)
    +      src << " << (" << code << ").to_s"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/optimized.rb, line 91
    +    def add_postamble(src)
    +      #super if @initialized
    +      src << "\n_buf\n" if @initialized
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/optimized.rb, line 50
    +    def add_preamble(src)
    +      #@initialized = false
    +      #@prev_is_expr = false
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/optimized.rb, line 66
    +    def add_stmt(src, code)
    +      switch_to_stmt(src) if @initialized
    +      #super
    +      src << code
    +      src << ';' unless code[-1] == ?\n
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/optimized.rb, line 55
    +    def add_text(src, text)
    +      return if text.empty?
    +      if @initialized
    +        switch_to_expr(src)
    +        src << " << '" << escape_text(text) << "'"
    +      else
    +        src << "_buf = '" << escape_text(text) << "';"
    +        @initialized = true
    +      end
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/optimized.rb, line 29
    +    def escape_text(text)
    +      text.gsub(/['\\]/, '\\\\\&')   # "'" => "\\'",  '\\' => '\\\\'
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/optimized.rb, line 33
    +    def escaped_expr(code)
    +      @escapefunc ||= 'Erubis::XmlHelper.escape_xml'
    +      return "#{@escapefunc}(#{code})"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/optimized.rb, line 38
    +    def switch_to_expr(src)
    +      return if @prev_is_expr
    +      @prev_is_expr = true
    +      src << ' _buf'
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/optimized.rb, line 44
    +    def switch_to_stmt(src)
    +      return unless @prev_is_expr
    +      @prev_is_expr = false
    +      src << ';'
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/OptimizedXmlEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/OptimizedXmlEruby.html new file mode 100644 index 0000000..a7b30e1 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/OptimizedXmlEruby.html @@ -0,0 +1,163 @@ + + + + + + Class: Erubis::OptimizedXmlEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::OptimizedXmlEruby
    In: + + erubis/engine/optimized.rb + +
    +
    Parent: + + OptimizedEruby + +
    +
    + + +
    + + + +
    + +
    +

    +XmlEruby class which generates optimized ruby +code +

    + +
    + + +
    + +
    +

    Methods

    + +
    + add_expr_debug   +
    +
    + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/optimized.rb, line 120
    +    def add_expr_debug(src, code)
    +      switch_to_stmt(src) if indicator == '===' && !@initialized
    +      super
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI.html new file mode 100644 index 0000000..388ae2f --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI.html @@ -0,0 +1,125 @@ + + + + + + Module: Erubis::PI + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::PI
    In: + + erubis/converter.rb + +
    + + erubis/tiny.rb + +
    +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + + +
    + + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Converter.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Converter.html new file mode 100644 index 0000000..04bec54 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Converter.html @@ -0,0 +1,266 @@ + + + + + + Module: Erubis::PI::Converter + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::PI::Converter
    In: + + erubis/converter.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +Processing Instructions (PI) converter for XML. +this class converts ’<?rb … ?>’ and +’${…}’ notation. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + convert   + convert_input   + init_converter   +
    +
    + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + +
    +

    Attributes

    + +
    + + + + + + + + + + + +
    pi [RW] 
    prefix [RW] 
    +
    +
    + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/converter.rb, line 224
    +    def convert(input)
    +      code = super(input)
    +      return @header || @footer ? "#{@header}#{code}#{@footer}" : code
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/converter.rb, line 215
    +    def init_converter(properties={})
    +      super(properties)
    +      @trim    = properties.fetch(:trim, true)
    +      @pi      = properties[:pi] if properties[:pi]
    +      @embchar = properties[:embchar] || '@'
    +      @pattern = properties[:pattern]
    +      @pattern = '<% %>' if @pattern.nil?  #|| @pattern == true
    +    end
    +
    +
    +
    +
    + +

    Protected Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/converter.rb, line 231
    +    def convert_input(codebuf, input)
    +      unless @regexp
    +        @pi ||= 'e'
    +        ch = Regexp.escape(@embchar)
    +        if @pattern
    +          left, right = @pattern.split(' ')
    +          @regexp = /<\?#{@pi}(?:-(\w+))?(\s.*?)\?>([ \t]*\r?\n)?|#{ch}(!*)?\{(.*?)\}#{ch}|#{left}(=+)(.*?)#{right}/m
    +        else
    +          @regexp = /<\?#{@pi}(?:-(\w+))?(\s.*?)\?>([ \t]*\r?\n)?|#{ch}(!*)?\{(.*?)\}#{ch}/m
    +        end
    +      end
    +      #
    +      is_bol = true
    +      pos = 0
    +      input.scan(@regexp) do |pi_arg, stmt, rspace,
    +                              indicator1, expr1, indicator2, expr2|
    +        match = Regexp.last_match
    +        len = match.begin(0) - pos
    +        text = input[pos, len]
    +        pos = match.end(0)
    +        lspace = stmt ? detect_spaces_at_bol(text, is_bol) : nil
    +        is_bol = stmt && rspace ? true : false
    +        add_text(codebuf, text) # unless text.empty?
    +        #
    +        if stmt
    +          if @trim && lspace && rspace
    +            add_pi_stmt(codebuf, "#{lspace}#{stmt}#{rspace}", pi_arg)
    +          else
    +            add_text(codebuf, lspace) if lspace
    +            add_pi_stmt(codebuf, stmt, pi_arg)
    +            add_text(codebuf, rspace) if rspace
    +          end
    +        else
    +          add_pi_expr(codebuf, expr1 || expr2, indicator1 || indicator2)
    +        end
    +      end
    +      #rest = $' || input                        # ruby1.8
    +      rest = pos == 0 ? input : input[pos..-1]   # ruby1.9
    +      add_text(codebuf, rest)
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ec.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ec.html new file mode 100644 index 0000000..bcfc83a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ec.html @@ -0,0 +1,166 @@ + + + + + + Class: Erubis::PI::Ec + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::PI::Ec
    In: + + erubis/engine/ec.rb + +
    +
    Parent: + PI::Engine +
    +
    + + +
    + + + +
    + +
    +

    +class XmlEc < Ec +

    +
    +  include EscapeEnhancer
    +
    +

    +end +

    + +
    + + +
    + +
    +

    Methods

    + +
    + init_converter   +
    +
    + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ec.rb, line 109
    +    def init_converter(properties={})
    +      @pi = 'c'
    +      super(properties)
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ecpp.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ecpp.html new file mode 100644 index 0000000..fe85b0f --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ecpp.html @@ -0,0 +1,166 @@ + + + + + + Class: Erubis::PI::Ecpp + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::PI::Ecpp
    In: + + erubis/engine/ecpp.rb + +
    +
    Parent: + PI::Engine +
    +
    + + +
    + + + +
    + +
    +

    +class XmlEcpp < Ecpp +

    +
    +  include EscapeEnhancer
    +
    +

    +end +

    + +
    + + +
    + +
    +

    Methods

    + +
    + init_converter   +
    +
    + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ecpp.rb, line 105
    +    def init_converter(properties={})
    +      @pi = 'cpp'
    +      super(properties)
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ejava.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ejava.html new file mode 100644 index 0000000..f22cd8a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ejava.html @@ -0,0 +1,166 @@ + + + + + + Class: Erubis::PI::Ejava + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::PI::Ejava
    In: + + erubis/engine/ejava.rb + +
    +
    Parent: + PI::Engine +
    +
    + + +
    + + + +
    + +
    +

    +class XmlEjava < Ejava +

    +
    +  include EscapeEnhancer
    +
    +

    +end +

    + +
    + + +
    + +
    +

    Methods

    + +
    + init_converter   +
    +
    + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejava.rb, line 103
    +    def init_converter(properties={})
    +      @pi = 'java'
    +      super(properties)
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ejavascript.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ejavascript.html new file mode 100644 index 0000000..f97ba7e --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ejavascript.html @@ -0,0 +1,166 @@ + + + + + + Class: Erubis::PI::Ejavascript + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::PI::Ejavascript
    In: + + erubis/engine/ejavascript.rb + +
    +
    Parent: + PI::Engine +
    +
    + + +
    + + + +
    + +
    +

    +class XmlEjavascript < Ejavascript +

    +
    +  include EscapeEnhancer
    +
    +

    +end +

    + +
    + + +
    + +
    +

    Methods

    + +
    + init_converter   +
    +
    + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ejavascript.rb, line 111
    +    def init_converter(properties={})
    +      @pi = 'js'
    +      super(properties)
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Engine.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Engine.html new file mode 100644 index 0000000..beb659a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Engine.html @@ -0,0 +1,122 @@ + + + + + + Class: Erubis::PI::Engine + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::PI::Engine
    In: + + erubis/engine.rb + +
    +
    Parent: + + Engine + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Eperl.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Eperl.html new file mode 100644 index 0000000..2fbfa6c --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Eperl.html @@ -0,0 +1,166 @@ + + + + + + Class: Erubis::PI::Eperl + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::PI::Eperl
    In: + + erubis/engine/eperl.rb + +
    +
    Parent: + PI::Engine +
    +
    + + +
    + + + +
    + +
    +

    +class XmlEperl < Eperl +

    +
    +  include EscapeEnhancer
    +
    +

    +end +

    + +
    + + +
    + +
    +

    Methods

    + +
    + init_converter   +
    +
    + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eperl.rb, line 87
    +    def init_converter(properties={})
    +      @pi = 'perl'
    +      super(properties)
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ephp.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ephp.html new file mode 100644 index 0000000..5a7ac93 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Ephp.html @@ -0,0 +1,166 @@ + + + + + + Class: Erubis::PI::Ephp + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::PI::Ephp
    In: + + erubis/engine/ephp.rb + +
    +
    Parent: + PI::Engine +
    +
    + + +
    + + + +
    + +
    +

    +class XmlEphp < Ephp +

    +
    +  include EscapeEnhancer
    +
    +

    +end +

    + +
    + + +
    + +
    +

    Methods

    + +
    + init_converter   +
    +
    + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ephp.rb, line 91
    +    def init_converter(properties={})
    +      @pi = 'php'
    +      super(properties)
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Eruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Eruby.html new file mode 100644 index 0000000..8ee1195 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Eruby.html @@ -0,0 +1,155 @@ + + + + + + Class: Erubis::PI::Eruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::PI::Eruby
    In: + + erubis/engine/eruby.rb + +
    +
    Parent: + PI::Engine +
    +
    + + +
    + + + +
    + + + +
    + +
    +

    Methods

    + +
    + init_converter   +
    +
    + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eruby.rb, line 117
    +    def init_converter(properties={})
    +      @pi = 'rb'
    +      super(properties)
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Escheme.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Escheme.html new file mode 100644 index 0000000..8304f1c --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/Escheme.html @@ -0,0 +1,166 @@ + + + + + + Class: Erubis::PI::Escheme + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::PI::Escheme
    In: + + erubis/engine/escheme.rb + +
    +
    Parent: + PI::Engine +
    +
    + + +
    + + + +
    + +
    +

    +class XmlEscheme < Escheme +

    +
    +  include EscapeEnhancer
    +
    +

    +end +

    + +
    + + +
    + +
    +

    Methods

    + +
    + init_converter   +
    +
    + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/escheme.rb, line 106
    +    def init_converter(properties={})
    +      @pi = 'scheme'
    +      super(properties)
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/TinyEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/TinyEruby.html new file mode 100644 index 0000000..5ade026 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PI/TinyEruby.html @@ -0,0 +1,293 @@ + + + + + + Class: Erubis::PI::TinyEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::PI::TinyEruby
    In: + + erubis/tiny.rb + +
    +
    Parent: + Object +
    +
    + + +
    + + + +
    + + + +
    + +
    +

    Methods

    + +
    + convert   + evaluate   + new   + result   +
    +
    + +
    + + + + +
    + + +
    +

    Constants

    + +
    + + + + + + +
    EMBEDDED_PATTERN=/(^[ \t]*)?<\?rb(\s.*?)\?>([ \t]*\r?\n)?|@(!+)?\{(.*?)\}@/m
    +
    +
    + + + +
    +

    Attributes

    + +
    + + + + + + +
    src [R] 
    +
    +
    + + + + +
    +

    Public Class methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/tiny.rb, line 79
    +    def initialize(input=nil, options={})
    +      @escape  = options[:escape] || 'Erubis::XmlHelper.escape_xml'
    +      @src = convert(input) if input
    +    end
    +
    +
    +
    +
    + +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/tiny.rb, line 88
    +    def convert(input)
    +      src = "_buf = '';"           # preamble
    +      pos = 0
    +      input.scan(EMBEDDED_PATTERN) do |lspace, stmt, rspace, indicator, expr|
    +        match = Regexp.last_match
    +        len   = match.begin(0) - pos
    +        text  = input[pos, len]
    +        pos   = match.end(0)
    +        #src << " _buf << '" << escape_text(text) << "';"
    +        text.gsub!(/['\\]/, '\\\\\&')
    +        src << " _buf << '" << text << "';" unless text.empty?
    +        if stmt                # <?rb ... ?>
    +          if lspace && rspace
    +            src << "#{lspace}#{stmt}#{rspace}"
    +          else
    +            src << " _buf << '" << lspace << "';" if lspace
    +            src << stmt << ";"
    +            src << " _buf << '" << rspace << "';" if rspace
    +          end
    +        else                       # ${...}, $!{...}
    +          if !indicator
    +            src << " _buf << " << @escape << "(" << expr << ");"
    +          elsif indicator == '!'
    +            src << " _buf << (" << expr << ").to_s;"
    +          end
    +        end
    +      end
    +      #rest = $' || input                        # ruby1.8
    +      rest = pos == 0 ? input : input[pos..-1]   # ruby1.9
    +      #src << " _buf << '" << escape_text(rest) << "';"
    +      rest.gsub!(/['\\]/, '\\\\\&')
    +      src << " _buf << '" << rest << "';" unless rest.empty?
    +      src << "\n_buf.to_s\n"       # postamble
    +      return src
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/tiny.rb, line 132
    +    def evaluate(_context=Object.new)
    +      if _context.is_a?(Hash)
    +        _obj = Object.new
    +        _context.each do |k, v| _obj.instance_variable_set("@#{k}", v) end
    +        _context = _obj
    +      end
    +      _context.instance_eval @src
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    +def escape_text(text) +

    +
    +  return text.gsub!(/['\\]/, '\\\\\&') || text
    +
    +

    +end +

    +

    [Source]

    +
    +
    +# File erubis/tiny.rb, line 128
    +    def result(_binding=TOPLEVEL_BINDING)
    +      eval @src, _binding
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PercentLineEnhancer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PercentLineEnhancer.html new file mode 100644 index 0000000..a7ed784 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PercentLineEnhancer.html @@ -0,0 +1,163 @@ + + + + + + Module: Erubis::PercentLineEnhancer + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::PercentLineEnhancer
    In: + + erubis/enhancer.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +regards lines starting with ’%’ as program code +

    +

    +this is for compatibility to eruby and ERB. +

    +

    +this is language-independent. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + add_text   +
    +
    + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 516
    +    def add_text(src, text)
    +      unless @prefixrexp
    +        @prefixchar = '%'
    +        @prefixrexp = /^\%(.*?\r?\n)/
    +      end
    +      super(src, text)
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PercentLineEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PercentLineEruby.html new file mode 100644 index 0000000..8621292 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PercentLineEruby.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::PercentLineEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::PercentLineEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PerlGenerator.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PerlGenerator.html new file mode 100644 index 0000000..f136c7a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PerlGenerator.html @@ -0,0 +1,344 @@ + + + + + + Module: Erubis::PerlGenerator + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::PerlGenerator
    In: + + erubis/engine/eperl.rb + +
    +
    +
    + + +
    + + + +
    + + + +
    + +
    +

    Methods

    + + +
    + +
    + + + +
    +

    Included Modules

    + +
    + Generator +
    +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eperl.rb, line 49
    +    def add_expr_debug(src, code)
    +      code.strip!
    +      s = code.gsub(/\'/, "\\'")
    +      src << @func << "('*** debug: #{code}=', #{code}, \"\\n\");"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eperl.rb, line 45
    +    def add_expr_escaped(src, code)
    +      add_expr_literal(src, escaped_expr(code))
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eperl.rb, line 40
    +    def add_expr_literal(src, code)
    +      code.strip!
    +      src << @func << "(" << code << "); "
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eperl.rb, line 59
    +    def add_postamble(src)
    +      src << "\n" unless src[-1] == ?\n
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eperl.rb, line 28
    +    def add_preamble(src)
    +      src << "use HTML::Entities; ";
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eperl.rb, line 55
    +    def add_stmt(src, code)
    +      src << code
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eperl.rb, line 36
    +    def add_text(src, text)
    +      src << @func << "('" << escape_text(text) << "'); " unless text.empty?
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eperl.rb, line 32
    +    def escape_text(text)
    +      return text.gsub!(/['\\]/, '\\\\\&') || text
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eperl.rb, line 22
    +    def init_generator(properties={})
    +      super
    +      @escapefunc ||= 'encode_entities'
    +      @func = properties[:func] || 'print'
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PhpGenerator.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PhpGenerator.html new file mode 100644 index 0000000..8b689a2 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PhpGenerator.html @@ -0,0 +1,350 @@ + + + + + + Module: Erubis::PhpGenerator + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::PhpGenerator
    In: + + erubis/engine/ephp.rb + +
    +
    +
    + + +
    + + + +
    + + + +
    + +
    +

    Methods

    + + +
    + +
    + + + +
    +

    Included Modules

    + +
    + Generator +
    +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ephp.rb, line 46
    +    def add_expr_debug(src, code)
    +      code.strip!
    +      s = code.gsub(/\'/, "\\'")
    +      src << "<?php error_log('*** debug: #{s}='.(#{code}), 0); ?>"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ephp.rb, line 42
    +    def add_expr_escaped(src, code)
    +      add_expr_literal(src, escaped_expr(code))
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ephp.rb, line 37
    +    def add_expr_literal(src, code)
    +      code.strip!
    +      src << "<?php echo #{code}; ?>"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ephp.rb, line 63
    +    def add_postamble(src)
    +      # empty
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ephp.rb, line 25
    +    def add_preamble(src)
    +      # empty
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ephp.rb, line 52
    +    def add_stmt(src, code)
    +      src << "<?php"
    +      src << " " if code[0] != ?\ #
    +      if code[-1] == ?\n
    +        code.chomp!
    +        src << code << "?>\n"
    +      else
    +        src << code << "?>"
    +      end
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ephp.rb, line 33
    +    def add_text(src, text)
    +      src << escape_text(text)
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ephp.rb, line 29
    +    def escape_text(text)
    +      return text.gsub!(/<\?xml\b/, '<<?php ?>?xml') || text
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/ephp.rb, line 20
    +    def init_generator(properties={})
    +      super
    +      @escapefunc ||= 'htmlspecialchars'
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrefixedLineEnhancer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrefixedLineEnhancer.html new file mode 100644 index 0000000..0069cdf --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrefixedLineEnhancer.html @@ -0,0 +1,210 @@ + + + + + + Module: Erubis::PrefixedLineEnhancer + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::PrefixedLineEnhancer
    In: + + erubis/enhancer.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +regards lines starting with ’^[ \t]*%’ as program code +

    +

    +in addition you can specify prefix character (default ’%’) +

    +

    +this is language-independent. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + add_text   + init_generator   +
    +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 454
    +    def add_text(src, text)
    +      unless @prefixrexp
    +        @prefixchar ||= '%'
    +        @prefixrexp = Regexp.compile("^([ \\t]*)\\#{@prefixchar}(.*?\\r?\\n)")
    +      end
    +      pos = 0
    +      text2 = ''
    +      text.scan(@prefixrexp) do
    +        space = $1
    +        line  = $2
    +        space, line = '', $1 unless $2
    +        match = Regexp.last_match
    +        len   = match.begin(0) - pos
    +        str   = text[pos, len]
    +        pos   = match.end(0)
    +        if text2.empty?
    +          text2 = str
    +        else
    +          text2 << str
    +        end
    +        if line[0, 1] == @prefixchar
    +          text2 << space << line
    +        else
    +          super(src, text2)
    +          text2 = ''
    +          add_stmt(src, space + line)
    +        end
    +      end
    +      #rest = pos == 0 ? text : $'             # ruby1.8
    +      rest = pos == 0 ? text : text[pos..-1]   # ruby1.9
    +      unless text2.empty?
    +        text2 << rest if rest
    +        rest = text2
    +      end
    +      super(src, rest)
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 449
    +    def init_generator(properties={})
    +      super
    +      @prefixchar = properties[:prefixchar]
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrefixedLineEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrefixedLineEruby.html new file mode 100644 index 0000000..93d8f2b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrefixedLineEruby.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::PrefixedLineEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::PrefixedLineEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PreprocessingEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PreprocessingEruby.html new file mode 100644 index 0000000..4f4c8da --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PreprocessingEruby.html @@ -0,0 +1,183 @@ + + + + + + Class: Erubis::PreprocessingEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::PreprocessingEruby
    In: + + erubis/preprocessing.rb + +
    +
    Parent: + + Erubis::Eruby + +
    +
    + + +
    + + + +
    + +
    +

    +for preprocessing +

    + +
    + + +
    + +
    +

    Methods

    + +
    + add_expr_escaped   + new   +
    +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Class methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/preprocessing.rb, line 17
    +    def initialize(input, params={})
    +      params = params.dup
    +      params[:pattern] ||= '\[% %\]'    # use '[%= %]' instead of '<%= %>'
    +      #params[:escape] = true            # transport '[%= %]' and '[%== %]'
    +      super
    +    end
    +
    +
    +
    +
    + +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/preprocessing.rb, line 24
    +    def add_expr_escaped(src, code)
    +      add_expr_literal(src, "_decode((#{code}))")
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PreprocessingHelper.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PreprocessingHelper.html new file mode 100644 index 0000000..4f1e235 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PreprocessingHelper.html @@ -0,0 +1,212 @@ + + + + + + Module: Erubis::PreprocessingHelper + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::PreprocessingHelper
    In: + + erubis/preprocessing.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +helper methods for preprocessing +

    + +
    + + +
    + +
    +

    Methods

    + +
    + _?   + _P   + _decode   + _p   +
    +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + +
    + _?(arg) +
    + +
    +

    +Alias for _p +

    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/preprocessing.rb, line 42
    +    def _P(arg)
    +      return "<%=h(#{arg})%>"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/preprocessing.rb, line 48
    +    def _decode(arg)
    +      arg = arg.to_s
    +      arg.gsub!(/%3C%25(?:=|%3D)(.*?)%25%3E/) { "<%=#{CGI.unescape($1)}%>" }
    +      arg.gsub!(/&lt;%=(.*?)%&gt;/) { "<%=#{CGI.unescapeHTML($1)}%>" }
    +      return arg
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/preprocessing.rb, line 38
    +    def _p(arg)
    +      return "<%=#{arg}%>"
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintEnabledEnhancer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintEnabledEnhancer.html new file mode 100644 index 0000000..ff8022e --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintEnabledEnhancer.html @@ -0,0 +1,212 @@ + + + + + + Module: Erubis::PrintEnabledEnhancer + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::PrintEnabledEnhancer
    In: + + erubis/enhancer.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +enable print function +

    +

    +Notice: use Eruby#evaluate() and don‘t use Eruby#result() to be +enable print function. +

    +

    +this is only for Eruby. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + add_preamble   + evaluate   + print   +
    +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 127
    +    def add_preamble(src)
    +      src << "@_buf = "
    +      super
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 138
    +    def evaluate(context=nil)
    +      _src = @src
    +      if context.is_a?(Hash)
    +        context.each do |key, val| instance_variable_set("@#{key}", val) end
    +      elsif context
    +        context.instance_variables.each do |name|
    +          instance_variable_set(name, context.instance_variable_get(name))
    +        end
    +      end
    +      return instance_eval(_src, (@filename || '(erubis)'))
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 132
    +    def print(*args)
    +      args.each do |arg|
    +        @_buf << arg.to_s
    +      end
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintEnabledEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintEnabledEruby.html new file mode 100644 index 0000000..c4efc94 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintEnabledEruby.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::PrintEnabledEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::PrintEnabledEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintOutEnhancer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintOutEnhancer.html new file mode 100644 index 0000000..e1b1417 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintOutEnhancer.html @@ -0,0 +1,244 @@ + + + + + + Module: Erubis::PrintOutEnhancer + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::PrintOutEnhancer
    In: + + erubis/enhancer.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +use print statement instead of ‘_buf << …’ +

    +

    +this is only for Eruby. +

    + +
    + + +
    + +
    +

    Methods

    + + +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 102
    +    def add_expr_escaped(src, code)
    +      src << " print #{escaped_expr(code)};"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 98
    +    def add_expr_literal(src, code)
    +      src << " print((#{code}).to_s);"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 106
    +    def add_postamble(src)
    +      src << "\n" unless src[-1] == ?\n
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 91
    +    def add_preamble(src)
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 94
    +    def add_text(src, text)
    +      src << " print '#{escape_text(text)}';" unless text.empty?
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintOutEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintOutEruby.html new file mode 100644 index 0000000..b3a9b22 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintOutEruby.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::PrintOutEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::PrintOutEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintOutSimplifiedEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintOutSimplifiedEruby.html new file mode 100644 index 0000000..8800630 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/PrintOutSimplifiedEruby.html @@ -0,0 +1,121 @@ + + + + + + Class: Erubis::PrintOutSimplifiedEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::PrintOutSimplifiedEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/RubyEvaluator.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/RubyEvaluator.html new file mode 100644 index 0000000..c2e4066 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/RubyEvaluator.html @@ -0,0 +1,227 @@ + + + + + + Module: Erubis::RubyEvaluator + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::RubyEvaluator
    In: + + erubis/evaluator.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +evaluator for Ruby +

    + +
    + + +
    + +
    +

    Methods

    + +
    + def_method   + evaluate   + result   +
    +
    + +
    + + + +
    +

    Included Modules

    + +
    + Evaluator +
    +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    +if object is an Class or Module then define instance method to it, else +define singleton method to it. +

    +

    [Source]

    +
    +
    +# File erubis/evaluator.rb, line 79
    +    def def_method(object, method_name, filename=nil)
    +      m = object.is_a?(Module) ? :module_eval : :instance_eval
    +      object.__send__(m, "def #{method_name}; #{@src}; end", filename || @filename || '(erubis)')
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    +invoke context.instance_eval(@src) +

    +

    [Source]

    +
    +
    +# File erubis/evaluator.rb, line 69
    +    def evaluate(_context=Context.new)
    +      _context = Context.new(_context) if _context.is_a?(Hash)
    +      #return _context.instance_eval(@src, @filename || '(erubis)')
    +      #@_proc ||= eval("proc { #{@src} }", Erubis::EMPTY_BINDING, @filename || '(erubis)')
    +      @_proc ||= eval("proc { #{@src} }", binding(), @filename || '(erubis)')
    +      return _context.instance_eval(&@_proc)
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    +eval(@src) with binding object +

    +

    [Source]

    +
    +
    +# File erubis/evaluator.rb, line 53
    +    def result(_binding_or_hash=TOPLEVEL_BINDING)
    +      _arg = _binding_or_hash
    +      if _arg.is_a?(Hash)
    +        _b = binding()
    +        eval _arg.collect{|k,v| "#{k} = _arg[#{k.inspect}]; "}.join, _b
    +      elsif _arg.is_a?(Binding)
    +        _b = _arg
    +      elsif _arg.nil?
    +        _b = binding()
    +      else
    +        raise ArgumentError.new("#{self.class.name}#result(): argument should be Binding or Hash but passed #{_arg.class.name} object.")
    +      end
    +      return eval(@src, _b, (@filename || '(erubis'))
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/RubyGenerator.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/RubyGenerator.html new file mode 100644 index 0000000..436c1f4 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/RubyGenerator.html @@ -0,0 +1,328 @@ + + + + + + Module: Erubis::RubyGenerator + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::RubyGenerator
    In: + + erubis/engine/eruby.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +code generator for Ruby +

    + +
    + + +
    + +
    +

    Methods

    + + +
    + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eruby.rb, line 63
    +    def add_expr_debug(src, code)
    +      code.strip!
    +      s = (code.dump =~ /\A"(.*)"\z/) && $1
    +      src << ' $stderr.puts("*** debug: ' << s << '=#{(' << code << ').inspect}");'
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eruby.rb, line 59
    +    def add_expr_escaped(src, code)
    +      src << " #{@bufvar} << " << escaped_expr(code) << ';'
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eruby.rb, line 55
    +    def add_expr_literal(src, code)
    +      src << " #{@bufvar} << (" << code << ').to_s;'
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eruby.rb, line 49
    +    def add_stmt(src, code)
    +      #src << code << ';'
    +      src << code
    +      src << ';' unless code[-1] == ?\n
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eruby.rb, line 45
    +    def add_text(src, text)
    +      src << " #{@bufvar} << '" << escape_text(text) << "';" unless text.empty?
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eruby.rb, line 31
    +    def escape_text(text)
    +      text.gsub(/['\\]/, '\\\\\&')   # "'" => "\\'",  '\\' => '\\\\'
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eruby.rb, line 35
    +    def escaped_expr(code)
    +      return "#{@escapefunc}(#{code})"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/eruby.rb, line 21
    +    def init_generator(properties={})
    +      super
    +      @escapefunc ||= "Erubis::XmlHelper.escape_xml"
    +      @bufvar     = properties[:bufvar] || "_buf"
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/SchemeGenerator.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/SchemeGenerator.html new file mode 100644 index 0000000..dce177a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/SchemeGenerator.html @@ -0,0 +1,382 @@ + + + + + + Module: Erubis::SchemeGenerator + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::SchemeGenerator
    In: + + erubis/engine/escheme.rb + +
    +
    +
    + + +
    + + + +
    + + + +
    + +
    +

    Methods

    + + +
    + +
    + + + +
    +

    Included Modules

    + +
    + Generator +
    +
    + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/escheme.rb, line 71
    +    def add_expr_debug(src, code)
    +      s = (code.strip! || code).gsub(/\"/, '\\"')
    +      src << "(display \"*** debug: #{s}=\")(display #{code.strip})(display \"\\n\")"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/escheme.rb, line 67
    +    def add_expr_escaped(src, code)
    +      add_expr_literal(src, escaped_expr(code))
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/escheme.rb, line 62
    +    def add_expr_literal(src, code)
    +      code.strip!
    +      src << "(#{@func} #{code})"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/escheme.rb, line 76
    +    def add_postamble(src)
    +      return unless @func == '_add'
    +      src << "\n" unless src[-1] == ?\n
    +      src << "  (reverse _buf))\n"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/escheme.rb, line 28
    +    def add_preamble(src)
    +      return unless @func == '_add'
    +      src << "(let ((_buf '())) " + \
    +               "(define (_add x) (set! _buf (cons x _buf))) "
    +      #src << "(let* ((_buf '())" +        #             " (_add (lambda (x) (set! _buf (cons x _buf))))) "
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/escheme.rb, line 58
    +    def add_stmt(src, code)
    +      src << code
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/escheme.rb, line 47
    +    def add_text(src, text)
    +      return if text.empty?
    +      t = escape_text(text)
    +      if t[-1] == ?\n
    +        t[-1, 1] = ''
    +        src << "(#{@func} \"" << t << "\\n\")\n"
    +      else
    +        src << "(#{@func} \"" << t << '")'
    +      end
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/escheme.rb, line 36
    +    def escape_text(text)
    +      @table_ ||= { '"'=>'\\"', '\\'=>'\\\\' }
    +      text.gsub!(/["\\]/) { |m| @table_[m] }
    +      return text
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/escheme.rb, line 42
    +    def escaped_expr(code)
    +      code.strip!
    +      return "(#{@escapefunc} #{code})"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/engine/escheme.rb, line 22
    +    def init_generator(properties={})
    +      super
    +      @escapefunc ||= 'escape'
    +      @func = properties[:func] || '_add'   # or 'display'
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/SimplifiedEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/SimplifiedEruby.html new file mode 100644 index 0000000..01adfea --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/SimplifiedEruby.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::SimplifiedEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::SimplifiedEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/SimplifyEnhancer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/SimplifyEnhancer.html new file mode 100644 index 0000000..1e033d8 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/SimplifyEnhancer.html @@ -0,0 +1,191 @@ + + + + + + Module: Erubis::SimplifyEnhancer + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::SimplifyEnhancer
    In: + + erubis/enhancer.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +get convert faster, but spaces +around ’<%…%>’ are not trimmed. +

    +

    +this is language-independent. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + convert   +
    +
    + +
    + + + + +
    + + +
    +

    Constants

    + +
    + + + + + + + + +
    SIMPLE_REGEXP=/<%(=+|\#)?(.*?)-?%>/m  +DEFAULT_REGEXP = /(^[ \t]*)?<%(=+|\#)?(.*?)-?%>([ \t]*\r?\n)?/m + +
    +
    +
    + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 342
    +    def convert(input)
    +      src = ""
    +      add_preamble(src)
    +      #regexp = pattern_regexp(@pattern)
    +      pos = 0
    +      input.scan(SIMPLE_REGEXP) do |indicator, code|
    +        match = Regexp.last_match
    +        index = match.begin(0)
    +        text  = input[pos, index - pos]
    +        pos   = match.end(0)
    +        add_text(src, text)
    +        if !indicator              # <% %>
    +          add_stmt(src, code)
    +        elsif indicator[0] == ?\#  # <%# %>
    +          n = code.count("\n")
    +          add_stmt(src, "\n" * n)
    +        else                       # <%= %>
    +          add_expr(src, code, indicator)
    +        end
    +      end
    +      #rest = $' || input                      # ruby1.8
    +      rest = pos == 0 ? input : input[pos..-1]  # ruby1.9
    +      add_text(src, rest)
    +      add_postamble(src)
    +      return src
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StdoutEnhancer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StdoutEnhancer.html new file mode 100644 index 0000000..05e37ba --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StdoutEnhancer.html @@ -0,0 +1,173 @@ + + + + + + Module: Erubis::StdoutEnhancer + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::StdoutEnhancer
    In: + + erubis/enhancer.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +use $stdout instead of string +

    +

    +this is only for Eruby. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + add_postamble   + add_preamble   +
    +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 73
    +    def add_postamble(src)
    +      src << "\n''\n"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 69
    +    def add_preamble(src)
    +      src << "#{@bufvar} = $stdout;"
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StdoutEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StdoutEruby.html new file mode 100644 index 0000000..bd6eadb --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StdoutEruby.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::StdoutEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::StdoutEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StdoutSimplifiedEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StdoutSimplifiedEruby.html new file mode 100644 index 0000000..e6ec46d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StdoutSimplifiedEruby.html @@ -0,0 +1,121 @@ + + + + + + Class: Erubis::StdoutSimplifiedEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::StdoutSimplifiedEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StringBufferEnhancer.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StringBufferEnhancer.html new file mode 100644 index 0000000..8b14c93 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StringBufferEnhancer.html @@ -0,0 +1,174 @@ + + + + + + Module: Erubis::StringBufferEnhancer + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::StringBufferEnhancer
    In: + + erubis/enhancer.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +use String class for buffering +

    +

    +this is only for Eruby. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + add_postamble   + add_preamble   +
    +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 214
    +    def add_postamble(src)
    +      src << "\n" unless src[-1] == ?\n
    +      src << "#{@bufvar}.to_s\n"
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/enhancer.rb, line 210
    +    def add_preamble(src)
    +      src << "#{@bufvar} = '';"
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StringBufferEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StringBufferEruby.html new file mode 100644 index 0000000..1e39331 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StringBufferEruby.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::StringBufferEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::StringBufferEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StringIOEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StringIOEruby.html new file mode 100644 index 0000000..c1bcb98 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/StringIOEruby.html @@ -0,0 +1,120 @@ + + + + + + Class: Erubis::StringIOEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::StringIOEruby
    In: + + erubis/engine/enhanced.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +

    Included Modules

    + +
    + StringIOEnhancer +
    +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/TinyEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/TinyEruby.html new file mode 100644 index 0000000..6c9abc2 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/TinyEruby.html @@ -0,0 +1,298 @@ + + + + + + Class: Erubis::TinyEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::TinyEruby
    In: + + erubis/tiny.rb + +
    +
    Parent: + Object +
    +
    + + +
    + + + +
    + +
    +

    +tiny and the simplest implementation of eRuby +

    +

    +ex. +

    +
    +  eruby = TinyEruby.new(File.read('example.rhtml'))
    +  print eruby.src                 # print ruby code
    +  print eruby.result(binding())   # eval ruby code with Binding object
    +  print eruby.evalute(context)    # eval ruby code with context object
    +
    + +
    + + +
    + +
    +

    Methods

    + +
    + convert   + evaluate   + new   + result   +
    +
    + +
    + + + + +
    + + +
    +

    Constants

    + +
    + + + + + + +
    EMBEDDED_PATTERN=/<%(=+|\#)?(.*?)-?%>/m
    +
    +
    + + + +
    +

    Attributes

    + +
    + + + + + + +
    src [R] 
    +
    +
    + + + + +
    +

    Public Class methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/tiny.rb, line 19
    +    def initialize(input=nil)
    +      @src = convert(input) if input
    +    end
    +
    +
    +
    +
    + +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/tiny.rb, line 26
    +    def convert(input)
    +      src = "_buf = '';"           # preamble
    +      pos = 0
    +      input.scan(EMBEDDED_PATTERN) do |indicator, code|
    +        m = Regexp.last_match
    +        text = input[pos...m.begin(0)]
    +        pos  = m.end(0)
    +        #src << " _buf << '" << escape_text(text) << "';"
    +        text.gsub!(/['\\]/, '\\\\\&')
    +        src << " _buf << '" << text << "';" unless text.empty?
    +        if !indicator              # <% %>
    +          src << code << ";"
    +        elsif indicator == '#'     # <%# %>
    +          src << ("\n" * code.count("\n"))
    +        else                       # <%= %>
    +          src << " _buf << (" << code << ").to_s;"
    +        end
    +      end
    +      #rest = $' || input                        # ruby1.8
    +      rest = pos == 0 ? input : input[pos..-1]   # ruby1.9
    +      #src << " _buf << '" << escape_text(rest) << "';"
    +      rest.gsub!(/['\\]/, '\\\\\&')
    +      src << " _buf << '" << rest << "';" unless rest.empty?
    +      src << "\n_buf.to_s\n"       # postamble
    +      return src
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/tiny.rb, line 61
    +    def evaluate(_context=Object.new)
    +      if _context.is_a?(Hash)
    +        _obj = Object.new
    +        _context.each do |k, v| _obj.instance_variable_set("@#{k}", v) end
    +        _context = _obj
    +      end
    +      _context.instance_eval @src
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    +def escape_text(text) +

    +
    +  return text.gsub!(/['\\]/, '\\\\\&') || text
    +
    +

    +end +

    +

    [Source]

    +
    +
    +# File erubis/tiny.rb, line 57
    +    def result(_binding=TOPLEVEL_BINDING)
    +      eval @src, _binding
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/XmlEruby.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/XmlEruby.html new file mode 100644 index 0000000..45a769a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/XmlEruby.html @@ -0,0 +1,130 @@ + + + + + + Class: Erubis::XmlEruby + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    ClassErubis::XmlEruby
    In: + + erubis/engine/eruby.rb + +
    +
    Parent: + + Eruby + +
    +
    + + +
    + + + +
    + +
    +

    +sanitize expression (<%= … %>) by default +

    +

    +this is equivalent to EscapedEruby and is +prepared only for compatibility. +

    + +
    + + +
    + + +
    + + + +
    +

    Included Modules

    + + +
    + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/XmlHelper.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/XmlHelper.html new file mode 100644 index 0000000..9718750 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/XmlHelper.html @@ -0,0 +1,255 @@ + + + + + + Module: Erubis::XmlHelper + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleErubis::XmlHelper
    In: + + erubis/helper.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +helper for xml +

    + +
    + + +
    + +
    +

    Methods

    + +
    + escape_xml   + escape_xml2   + h   + html_escape   + u   + url_encode   +
    +
    + +
    + + + + +
    + + +
    +

    Constants

    + +
    + + + + + + +
    ESCAPE_TABLE={ '&' => '&amp;', '<' => '&lt;', '>' => '&gt;', '"' => '&quot;', "'" => '&#039;', }
    +
    +
    + + + + + + + +
    +

    Public Instance methods

    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helper.rb, line 24
    +    def escape_xml(value)
    +      value.to_s.gsub(/[&<>"]/) { |s| ESCAPE_TABLE[s] }   # or /[&<>"']/
    +      #value.to_s.gsub(/[&<>"]/) { ESCAPE_TABLE[$&] }
    +    end
    +
    +
    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helper.rb, line 29
    +    def escape_xml2(value)
    +      return value.to_s.gsub(/\&/,'&amp;').gsub(/</,'&lt;').gsub(/>/,'&gt;').gsub(/"/,'&quot;')
    +    end
    +
    +
    +
    +
    + +
    + + +
    + h(value) +
    + +
    +

    +Alias for escape_xml +

    +
    +
    + +
    + + +
    + html_escape(value) +
    + +
    +

    +Alias for escape_xml +

    +
    +
    + +
    + + +
    + u(str) +
    + +
    +

    +Alias for url_encode +

    +
    +
    + +
    + + + + +
    +

    [Source]

    +
    +
    +# File erubis/helper.rb, line 36
    +    def url_encode(str)
    +      return str.gsub(/[^-_.a-zA-Z0-9]+/) { |s|
    +        s.unpack('C*').collect { |i| "%%%02X" % i }.join
    +      }
    +    end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Kernel.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Kernel.html new file mode 100644 index 0000000..237d745 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Kernel.html @@ -0,0 +1,155 @@ + + + + + + Module: Kernel + + + + + + + + + + +
    + + + + + + + + + + +
    ModuleKernel
    In: + + erubis/util.rb + +
    +
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + + +
    + +
    +

    Methods

    + +
    + not_implemented   +
    +
    + +
    + + + + +
    + + + + + + + + + +
    +

    Private Instance methods

    + +
    + + + + +
    +

    +raise NotImplementedError +

    +

    [Source]

    +
    +
    +# File erubis/util.rb, line 11
    +  def not_implemented     #:doc:
    +    backtrace = caller()
    +    method_name = (backtrace.shift =~ /`(\w+)'$/) && $1
    +    mesg = "class #{self.class.name} must implement abstract method '#{method_name}()'."
    +    #mesg = "#{self.class.name}##{method_name}() is not implemented."
    +    err = NotImplementedError.new mesg
    +    err.set_backtrace backtrace
    +    raise err
    +  end
    +
    +
    +
    +
    + + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/created.rid b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/created.rid new file mode 100644 index 0000000..b2c7859 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/created.rid @@ -0,0 +1 @@ +Sat, 02 Apr 2011 07:53:01 +0900 diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/README_txt.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/README_txt.html new file mode 100644 index 0000000..4a91039 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/README_txt.html @@ -0,0 +1,247 @@ + + + + + + File: README.txt + + + + + + + + + + +
    +

    README.txt

    + + + + + + + + + +
    Path:README.txt +
    Last Update:Sat Apr 02 07:53:01 +0900 2011
    +
    + + +
    + + + +
    + +
    +

    README

    + + + +
    release:2.7.0 + +
    copyright:copyright(c) 2006-2011 kuwata-lab.com all rights reserved. + +
    +

    About Erubis

    +

    +Erubis is an implementation of eRuby. +It has the following features. +

    +
      +
    • Very fast, almost three times faster than ERB and even 10% faster than eruby + +
    • +
    • Multi-language support (Ruby/PHP/C/Java/Scheme/Perl/Javascript) + +
    • +
    • Auto escaping support + +
    • +
    • Auto trimming spaces around ’<% %>’ + +
    • +
    • Embedded pattern changeable (default ’<% %>’) + +
    • +
    • Enable to handle Processing Instructions (PI) as embedded pattern (ex. +’<?rb … ?>’) + +
    • +
    • Context object available and easy to combine eRuby template with YAML +datafile + +
    • +
    • Print statement available + +
    • +
    • Easy to extend and customize in subclass + +
    • +
    • Ruby on Rails support + +
    • +
    +

    +Erubis is implemented in pure Ruby. It +requires Ruby 1.8 or higher. Erubis +now supports Ruby 1.9. +

    +

    +See doc/users-guide.html for details. +

    +

    Installation

    +
      +
    • If you have installed RubyGems, just type gem install erubis. + +
      +  $ sudo gem install erubis
      +
      +
    • +
    • Else install abstract +at first, and download erubis_X.X.X.tar.bz2 and install it by setup.rb. + +
      +  $ tar xjf abstract_X.X.X.tar.bz2
      +  $ cd abstract_X.X.X/
      +  $ sudo ruby setup.rb
      +  $ cd ..
      +  $ tar xjf erubis_X.X.X.tar.bz2
      +  $ cd erubis_X.X.X/
      +  $ sudo ruby setup.rb
      +
      +
    • +
    • (Optional) It is able to merge ‘lib/**/*.rb’ into +‘bin/erubis’ by ‘contrib/inline-require’ script. + +
      +  $ tar xjf erubis_X.X.X.tar.bz2
      +  $ cd erubis_X.X.X/
      +  $ cp /tmp/abstract_X.X.X/lib/abstract.rb lib
      +  $ unset RUBYLIB
      +  $ contrib/inline-require -I lib bin/erubis > contrib/erubis
      +
      +
    • +
    +

    Ruby on Rails Support

    +

    +Erubis supports Ruby on Rails. All you +have to do is to add the following code into your +‘config/environment.rb’ and restart web server. +

    +
    +     require 'erubis/helpers/rails_helper'
    +     #Erubis::Helpers::RailsHelper.engine_class = Erubis::Eruby
    +     #Erubis::Helpers::RailsHelper.init_properties = {}
    +     #Erubis::Helpers::RailsHelper.show_src = nil
    +
    +

    +If Erubis::Helpers::RailsHelper.show_src is ture, Erubis prints converted Ruby code into +log file (‘log/development.log’ or so). It is useful for debug. +

    +

    Exploring Guide

    +

    +If you are exploring Eruby, see the following class at first. +

    +
      +
    • Erubis::TinyEruby +(erubis/tiny.rb) — the most simple eRuby implementation. + +
    • +
    • Erubis::Engine +(erubis/engine.rb) — base class of Eruby, Ephp, Ejava, and so on. + +
    • +
    • Erubis::Eruby +(erubis/engine/eruby.rb) — engine class for eRuby. + +
    • +
    • Erubis::Converter +(erubis/converter.rb) — convert eRuby script into Ruby code. + +
    • +
    +

    Benchmark

    +

    +‘benchmark/erubybenchmark.rb’ is a benchmark script of Erubis. Try ‘ruby +erubybenchmark.rb’ in benchmark directory. +

    +

    License

    +

    +MIT License +

    +

    Author

    +

    +makoto kuwata <kwa(at)kuwata-lab.com> +

    + +
    + + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/context_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/context_rb.html new file mode 100644 index 0000000..e535372 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/context_rb.html @@ -0,0 +1,107 @@ + + + + + + File: context.rb + + + + + + + + + + +
    +

    context.rb

    + + + + + + + + + +
    Path:erubis/context.rb +
    Last Update:Tue Jul 14 09:47:22 +0900 2009
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/converter_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/converter_rb.html new file mode 100644 index 0000000..9256edc --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/converter_rb.html @@ -0,0 +1,114 @@ + + + + + + File: converter.rb + + + + + + + + + + +
    +

    converter.rb

    + + + + + + + + + +
    Path:erubis/converter.rb +
    Last Update:Tue Mar 22 15:43:22 +0900 2011
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + +
    + erubis/util   +
    +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ec_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ec_rb.html new file mode 100644 index 0000000..52b1b89 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ec_rb.html @@ -0,0 +1,115 @@ + + + + + + File: ec.rb + + + + + + + + + + +
    +

    ec.rb

    + + + + + + + + + +
    Path:erubis/engine/ec.rb +
    Last Update:Tue Jul 14 09:47:22 +0900 2009
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + + +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ecpp_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ecpp_rb.html new file mode 100644 index 0000000..a6ed996 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ecpp_rb.html @@ -0,0 +1,115 @@ + + + + + + File: ecpp.rb + + + + + + + + + + +
    +

    ecpp.rb

    + + + + + + + + + +
    Path:erubis/engine/ecpp.rb +
    Last Update:Tue Mar 22 16:31:59 +0900 2011
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + + +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ejava_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ejava_rb.html new file mode 100644 index 0000000..ef661be --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ejava_rb.html @@ -0,0 +1,115 @@ + + + + + + File: ejava.rb + + + + + + + + + + +
    +

    ejava.rb

    + + + + + + + + + +
    Path:erubis/engine/ejava.rb +
    Last Update:Mon Mar 21 20:51:19 +0900 2011
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + + +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ejavascript_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ejavascript_rb.html new file mode 100644 index 0000000..50982c6 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ejavascript_rb.html @@ -0,0 +1,115 @@ + + + + + + File: ejavascript.rb + + + + + + + + + + +
    +

    ejavascript.rb

    + + + + + + + + + +
    Path:erubis/engine/ejavascript.rb +
    Last Update:Mon Mar 21 20:50:10 +0900 2011
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + + +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/enhanced_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/enhanced_rb.html new file mode 100644 index 0000000..7dcb5e5 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/enhanced_rb.html @@ -0,0 +1,115 @@ + + + + + + File: enhanced.rb + + + + + + + + + + +
    +

    enhanced.rb

    + + + + + + + + + +
    Path:erubis/engine/enhanced.rb +
    Last Update:Tue Feb 22 21:00:22 +0900 2011
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + + +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/eperl_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/eperl_rb.html new file mode 100644 index 0000000..f69476b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/eperl_rb.html @@ -0,0 +1,115 @@ + + + + + + File: eperl.rb + + + + + + + + + + +
    +

    eperl.rb

    + + + + + + + + + +
    Path:erubis/engine/eperl.rb +
    Last Update:Tue Jul 14 09:47:22 +0900 2009
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + + +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ephp_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ephp_rb.html new file mode 100644 index 0000000..98e9cb8 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/ephp_rb.html @@ -0,0 +1,115 @@ + + + + + + File: ephp.rb + + + + + + + + + + +
    +

    ephp.rb

    + + + + + + + + + +
    Path:erubis/engine/ephp.rb +
    Last Update:Tue Jul 14 09:47:22 +0900 2009
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + + +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/eruby_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/eruby_rb.html new file mode 100644 index 0000000..ccb4c95 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/eruby_rb.html @@ -0,0 +1,115 @@ + + + + + + File: eruby.rb + + + + + + + + + + +
    +

    eruby.rb

    + + + + + + + + + +
    Path:erubis/engine/eruby.rb +
    Last Update:Mon Mar 21 20:46:28 +0900 2011
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + + +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/escheme_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/escheme_rb.html new file mode 100644 index 0000000..440cc72 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/escheme_rb.html @@ -0,0 +1,115 @@ + + + + + + File: escheme.rb + + + + + + + + + + +
    +

    escheme.rb

    + + + + + + + + + +
    Path:erubis/engine/escheme.rb +
    Last Update:Tue Jul 14 09:47:22 +0900 2009
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + + +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/optimized_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/optimized_rb.html new file mode 100644 index 0000000..44d0162 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine/optimized_rb.html @@ -0,0 +1,114 @@ + + + + + + File: optimized.rb + + + + + + + + + + +
    +

    optimized.rb

    + + + + + + + + + +
    Path:erubis/engine/optimized.rb +
    Last Update:Tue Jul 14 09:47:22 +0900 2009
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + + +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine_rb.html new file mode 100644 index 0000000..b3a9d5e --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/engine_rb.html @@ -0,0 +1,117 @@ + + + + + + File: engine.rb + + + + + + + + + + +
    +

    engine.rb

    + + + + + + + + + +
    Path:erubis/engine.rb +
    Last Update:Mon Mar 21 08:26:29 +0900 2011
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + + +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/enhancer_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/enhancer_rb.html new file mode 100644 index 0000000..50294a2 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/enhancer_rb.html @@ -0,0 +1,107 @@ + + + + + + File: enhancer.rb + + + + + + + + + + +
    +

    enhancer.rb

    + + + + + + + + + +
    Path:erubis/enhancer.rb +
    Last Update:Mon Mar 21 20:39:56 +0900 2011
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/error_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/error_rb.html new file mode 100644 index 0000000..2d81927 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/error_rb.html @@ -0,0 +1,107 @@ + + + + + + File: error.rb + + + + + + + + + + +
    +

    error.rb

    + + + + + + + + + +
    Path:erubis/error.rb +
    Last Update:Tue Jul 14 09:47:22 +0900 2009
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/evaluator_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/evaluator_rb.html new file mode 100644 index 0000000..791c3fb --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/evaluator_rb.html @@ -0,0 +1,115 @@ + + + + + + File: evaluator.rb + + + + + + + + + + +
    +

    evaluator.rb

    + + + + + + + + + +
    Path:erubis/evaluator.rb +
    Last Update:Tue Jul 14 09:47:22 +0900 2009
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + + +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/generator_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/generator_rb.html new file mode 100644 index 0000000..0f11b07 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/generator_rb.html @@ -0,0 +1,114 @@ + + + + + + File: generator.rb + + + + + + + + + + +
    +

    generator.rb

    + + + + + + + + + +
    Path:erubis/generator.rb +
    Last Update:Mon Mar 21 09:35:40 +0900 2011
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + +
    + erubis/util   +
    +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/helper_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/helper_rb.html new file mode 100644 index 0000000..bf001fc --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/helper_rb.html @@ -0,0 +1,107 @@ + + + + + + File: helper.rb + + + + + + + + + + +
    +

    helper.rb

    + + + + + + + + + +
    Path:erubis/helper.rb +
    Last Update:Tue Jul 14 09:47:22 +0900 2009
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/helpers/rails_form_helper_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/helpers/rails_form_helper_rb.html new file mode 100644 index 0000000..de19da5 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/helpers/rails_form_helper_rb.html @@ -0,0 +1,107 @@ + + + + + + File: rails_form_helper.rb + + + + + + + + + + +
    +

    rails_form_helper.rb

    + + + + + + + + + +
    Path:erubis/helpers/rails_form_helper.rb +
    Last Update:Tue Jul 14 09:47:22 +0900 2009
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/helpers/rails_helper_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/helpers/rails_helper_rb.html new file mode 100644 index 0000000..8ae3383 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/helpers/rails_helper_rb.html @@ -0,0 +1,116 @@ + + + + + + File: rails_helper.rb + + + + + + + + + + +
    +

    rails_helper.rb

    + + + + + + + + + +
    Path:erubis/helpers/rails_helper.rb +
    Last Update:Tue Jul 14 09:47:22 +0900 2009
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + +
    + erubis   + erubis/preprocessing   + action_pack/version   +
    +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/local-setting_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/local-setting_rb.html new file mode 100644 index 0000000..246a0d7 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/local-setting_rb.html @@ -0,0 +1,107 @@ + + + + + + File: local-setting.rb + + + + + + + + + + +
    +

    local-setting.rb

    + + + + + + + + + +
    Path:erubis/local-setting.rb +
    Last Update:Tue Jul 14 09:47:22 +0900 2009
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/main_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/main_rb.html new file mode 100644 index 0000000..97f75f3 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/main_rb.html @@ -0,0 +1,129 @@ + + + + + + File: main.rb + + + + + + + + + + +
    +

    main.rb

    + + + + + + + + + +
    Path:erubis/main.rb +
    Last Update:Tue Mar 22 16:31:59 +0900 2011
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + + +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/preprocessing_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/preprocessing_rb.html new file mode 100644 index 0000000..10e6b33 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/preprocessing_rb.html @@ -0,0 +1,114 @@ + + + + + + File: preprocessing.rb + + + + + + + + + + +
    +

    preprocessing.rb

    + + + + + + + + + +
    Path:erubis/preprocessing.rb +
    Last Update:Tue Jul 14 09:47:22 +0900 2009
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + +
    + cgi   +
    +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/tiny_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/tiny_rb.html new file mode 100644 index 0000000..6c5feca --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/tiny_rb.html @@ -0,0 +1,107 @@ + + + + + + File: tiny.rb + + + + + + + + + + +
    +

    tiny.rb

    + + + + + + + + + +
    Path:erubis/tiny.rb +
    Last Update:Tue Jul 14 09:47:22 +0900 2009
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/util_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/util_rb.html new file mode 100644 index 0000000..b5a923d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis/util_rb.html @@ -0,0 +1,107 @@ + + + + + + File: util.rb + + + + + + + + + + +
    +

    util.rb

    + + + + + + + + + +
    Path:erubis/util.rb +
    Last Update:Mon Mar 21 09:32:48 +0900 2011
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis_rb.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis_rb.html new file mode 100644 index 0000000..2d192e4 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/files/erubis_rb.html @@ -0,0 +1,118 @@ + + + + + + File: erubis.rb + + + + + + + + + + +
    +

    erubis.rb

    + + + + + + + + + +
    Path:erubis.rb +
    Last Update:Mon Mar 21 09:44:53 +0900 2011
    +
    + + +
    + + + +
    + +
    +

    +$Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +

    + +
    + +
    +

    Required files

    + + +
    + +
    + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/fr_class_index.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/fr_class_index.html new file mode 100644 index 0000000..79d9617 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/fr_class_index.html @@ -0,0 +1,129 @@ + + + + + + + + Classes + + + + + +
    +

    Classes

    +
    + ActionView
    + ActionView::TemplateHandlers::ErubisHandler
    + ERB
    + Erubis
    + Erubis::ArrayBufferEnhancer
    + Erubis::ArrayBufferEruby
    + Erubis::ArrayEnhancer
    + Erubis::ArrayEruby
    + Erubis::Basic
    + Erubis::Basic::Converter
    + Erubis::Basic::Engine
    + Erubis::BiPatternEnhancer
    + Erubis::BiPatternEruby
    + Erubis::CGenerator
    + Erubis::CommandOptionError
    + Erubis::Context
    + Erubis::Converter
    + Erubis::CppGenerator
    + Erubis::DeleteIndentEnhancer
    + Erubis::DeleteIndentEruby
    + Erubis::Ec
    + Erubis::Ecpp
    + Erubis::Ejava
    + Erubis::Ejavascript
    + Erubis::Engine
    + Erubis::Eperl
    + Erubis::Ephp
    + Erubis::ErboutEnhancer
    + Erubis::ErboutEruby
    + Erubis::ErubisError
    + Erubis::Eruby
    + Erubis::EscapeEnhancer
    + Erubis::EscapedEc
    + Erubis::EscapedEcpp
    + Erubis::EscapedEjava
    + Erubis::EscapedEjavascript
    + Erubis::EscapedEperl
    + Erubis::EscapedEphp
    + Erubis::EscapedEruby
    + Erubis::EscapedEscheme
    + Erubis::Escheme
    + Erubis::Evaluator
    + Erubis::FastEruby
    + Erubis::Generator
    + Erubis::HeaderFooterEnhancer
    + Erubis::HeaderFooterEruby
    + Erubis::Helpers
    + Erubis::Helpers::RailsFormHelper
    + Erubis::Helpers::RailsHelper
    + Erubis::Helpers::RailsHelper::TemplateConverter
    + Erubis::InterpolationEnhancer
    + Erubis::InterpolationEruby
    + Erubis::JavaGenerator
    + Erubis::JavascriptGenerator
    + Erubis::Main
    + Erubis::NoCodeEnhancer
    + Erubis::NoCodeEruby
    + Erubis::NoTextEnhancer
    + Erubis::NoTextEruby
    + Erubis::NotSupportedError
    + Erubis::OptimizedEruby
    + Erubis::OptimizedGenerator
    + Erubis::OptimizedXmlEruby
    + Erubis::PI
    + Erubis::PI::Converter
    + Erubis::PI::Ec
    + Erubis::PI::Ecpp
    + Erubis::PI::Ejava
    + Erubis::PI::Ejavascript
    + Erubis::PI::Engine
    + Erubis::PI::Eperl
    + Erubis::PI::Ephp
    + Erubis::PI::Eruby
    + Erubis::PI::Escheme
    + Erubis::PI::TinyEruby
    + Erubis::PercentLineEnhancer
    + Erubis::PercentLineEruby
    + Erubis::PerlGenerator
    + Erubis::PhpGenerator
    + Erubis::PrefixedLineEnhancer
    + Erubis::PrefixedLineEruby
    + Erubis::PreprocessingEruby
    + Erubis::PreprocessingHelper
    + Erubis::PrintEnabledEnhancer
    + Erubis::PrintEnabledEruby
    + Erubis::PrintOutEnhancer
    + Erubis::PrintOutEruby
    + Erubis::PrintOutSimplifiedEruby
    + Erubis::RubyEvaluator
    + Erubis::RubyGenerator
    + Erubis::SchemeGenerator
    + Erubis::SimplifiedEruby
    + Erubis::SimplifyEnhancer
    + Erubis::StdoutEnhancer
    + Erubis::StdoutEruby
    + Erubis::StdoutSimplifiedEruby
    + Erubis::StringBufferEnhancer
    + Erubis::StringBufferEruby
    + Erubis::StringIOEruby
    + Erubis::TinyEruby
    + Erubis::XmlEruby
    + Erubis::XmlHelper
    + Kernel
    +
    +
    + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/fr_file_index.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/fr_file_index.html new file mode 100644 index 0000000..ef20605 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/fr_file_index.html @@ -0,0 +1,53 @@ + + + + + + + + Files + + + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/fr_method_index.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/fr_method_index.html new file mode 100644 index 0000000..f39a25d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/fr_method_index.html @@ -0,0 +1,265 @@ + + + + + + + + Methods + + + + + +
    +

    Methods

    +
    + [] (Erubis::Context)
    + []= (Erubis::Context)
    + _? (Erubis::PreprocessingHelper)
    + _P (Erubis::PreprocessingHelper)
    + _add_text_to_str (Erubis::InterpolationEnhancer)
    + _create_preprocessor (Erubis::Helpers::RailsHelper::TemplateConverter)
    + _decode (Erubis::PreprocessingHelper)
    + _logger_info (Erubis::Helpers::RailsHelper::TemplateConverter)
    + _logger_info (Erubis::Helpers::RailsHelper::TemplateConverter)
    + _p (Erubis::PreprocessingHelper)
    + _pp_check_box_checked? (Erubis::Helpers::RailsFormHelper)
    + _pp_error_tags (Erubis::Helpers::RailsFormHelper)
    + _pp_radio_button_checked? (Erubis::Helpers::RailsFormHelper)
    + _pp_remove_error_div (Erubis::Helpers::RailsFormHelper)
    + _pp_select (Erubis::Helpers::RailsFormHelper)
    + _pp_select_options (Erubis::Helpers::RailsFormHelper)
    + _preprocessing_context_object (Erubis::Helpers::RailsHelper::TemplateConverter)
    + add_expr (Erubis::Basic::Converter)
    + add_expr (Erubis::NoCodeEnhancer)
    + add_expr (Erubis::EscapeEnhancer)
    + add_expr_debug (Erubis::PhpGenerator)
    + add_expr_debug (Erubis::JavascriptGenerator)
    + add_expr_debug (Erubis::CGenerator)
    + add_expr_debug (Erubis::OptimizedXmlEruby)
    + add_expr_debug (Erubis::CppGenerator)
    + add_expr_debug (Erubis::RubyGenerator)
    + add_expr_debug (Erubis::JavaGenerator)
    + add_expr_debug (Erubis::OptimizedGenerator)
    + add_expr_debug (Erubis::PerlGenerator)
    + add_expr_debug (Erubis::Generator)
    + add_expr_debug (Erubis::SchemeGenerator)
    + add_expr_escaped (Erubis::InterpolationEnhancer)
    + add_expr_escaped (Erubis::PhpGenerator)
    + add_expr_escaped (Erubis::OptimizedGenerator)
    + add_expr_escaped (Erubis::SchemeGenerator)
    + add_expr_escaped (Erubis::CppGenerator)
    + add_expr_escaped (Erubis::JavascriptGenerator)
    + add_expr_escaped (Erubis::PreprocessingEruby)
    + add_expr_escaped (Erubis::JavaGenerator)
    + add_expr_escaped (Erubis::PrintOutEnhancer)
    + add_expr_escaped (Erubis::RubyGenerator)
    + add_expr_escaped (Erubis::Generator)
    + add_expr_escaped (Erubis::CGenerator)
    + add_expr_escaped (Erubis::PerlGenerator)
    + add_expr_literal (Erubis::SchemeGenerator)
    + add_expr_literal (Erubis::JavaGenerator)
    + add_expr_literal (Erubis::PrintOutEnhancer)
    + add_expr_literal (Erubis::OptimizedGenerator)
    + add_expr_literal (Erubis::Generator)
    + add_expr_literal (Erubis::CGenerator)
    + add_expr_literal (Erubis::InterpolationEnhancer)
    + add_expr_literal (Erubis::PhpGenerator)
    + add_expr_literal (Erubis::CppGenerator)
    + add_expr_literal (Erubis::JavascriptGenerator)
    + add_expr_literal (Erubis::RubyGenerator)
    + add_expr_literal (Erubis::PerlGenerator)
    + add_indent (Erubis::JavascriptGenerator)
    + add_postamble (Erubis::ErboutEnhancer)
    + add_postamble (Erubis::SchemeGenerator)
    + add_postamble (Erubis::OptimizedGenerator)
    + add_postamble (Erubis::JavaGenerator)
    + add_postamble (Erubis::ArrayEnhancer)
    + add_postamble (Erubis::CGenerator)
    + add_postamble (Erubis::StdoutEnhancer)
    + add_postamble (Erubis::PrintOutEnhancer)
    + add_postamble (Erubis::StringBufferEnhancer)
    + add_postamble (Erubis::Generator)
    + add_postamble (Erubis::JavascriptGenerator)
    + add_postamble (Erubis::PhpGenerator)
    + add_postamble (Erubis::ArrayBufferEnhancer)
    + add_postamble (Erubis::NoCodeEnhancer)
    + add_postamble (Erubis::PerlGenerator)
    + add_postamble (Erubis::CppGenerator)
    + add_preamble (Erubis::PrintEnabledEnhancer)
    + add_preamble (Erubis::JavascriptGenerator)
    + add_preamble (Erubis::NoCodeEnhancer)
    + add_preamble (Erubis::PhpGenerator)
    + add_preamble (Erubis::ArrayBufferEnhancer)
    + add_preamble (Erubis::StdoutEnhancer)
    + add_preamble (Erubis::PrintOutEnhancer)
    + add_preamble (Erubis::Generator)
    + add_preamble (Erubis::CGenerator)
    + add_preamble (Erubis::CppGenerator)
    + add_preamble (Erubis::StringBufferEnhancer)
    + add_preamble (Erubis::ArrayEnhancer)
    + add_preamble (Erubis::JavaGenerator)
    + add_preamble (Erubis::OptimizedGenerator)
    + add_preamble (Erubis::PerlGenerator)
    + add_preamble (Erubis::SchemeGenerator)
    + add_preamble (Erubis::ErboutEnhancer)
    + add_stmt (Erubis::JavaGenerator)
    + add_stmt (Erubis::RubyGenerator)
    + add_stmt (Erubis::SchemeGenerator)
    + add_stmt (Erubis::JavascriptGenerator)
    + add_stmt (Erubis::NoCodeEnhancer)
    + add_stmt (Erubis::OptimizedGenerator)
    + add_stmt (Erubis::PhpGenerator)
    + add_stmt (Erubis::PerlGenerator)
    + add_stmt (Erubis::CppGenerator)
    + add_stmt (Erubis::CGenerator)
    + add_stmt (Erubis::Generator)
    + add_text (Erubis::CGenerator)
    + add_text (Erubis::Generator)
    + add_text (Erubis::InterpolationEnhancer)
    + add_text (Erubis::CppGenerator)
    + add_text (Erubis::PrintOutEnhancer)
    + add_text (Erubis::PerlGenerator)
    + add_text (Erubis::JavascriptGenerator)
    + add_text (Erubis::NoTextEnhancer)
    + add_text (Erubis::BiPatternEnhancer)
    + add_text (Erubis::NoCodeEnhancer)
    + add_text (Erubis::HeaderFooterEnhancer)
    + add_text (Erubis::PhpGenerator)
    + add_text (Erubis::PercentLineEnhancer)
    + add_text (Erubis::SchemeGenerator)
    + add_text (Erubis::PrefixedLineEnhancer)
    + add_text (Erubis::RubyGenerator)
    + add_text (Erubis::JavaGenerator)
    + add_text (Erubis::OptimizedGenerator)
    + compile (ActionView::TemplateHandlers::ErubisHandler)
    + compile (ActionView::TemplateHandlers::ErubisHandler)
    + compile (ActionView::TemplateHandlers::ErubisHandler)
    + convert (Erubis::HeaderFooterEnhancer)
    + convert (Erubis::Converter)
    + convert (Erubis::SimplifyEnhancer)
    + convert (Erubis::PI::TinyEruby)
    + convert (Erubis::PI::Converter)
    + convert (Erubis::TinyEruby)
    + convert! (Erubis::Engine)
    + convert_input (Erubis::Converter)
    + convert_input (Erubis::Basic::Converter)
    + convert_input (Erubis::InterpolationEnhancer)
    + convert_input (Erubis::DeleteIndentEnhancer)
    + convert_input (Erubis::PI::Converter)
    + def_method (Erubis::RubyEvaluator)
    + detect_spaces_at_bol (Erubis::Converter)
    + each (Erubis::Context)
    + engine_class (Erubis::Helpers::RailsHelper)
    + engine_class= (Erubis::Helpers::RailsHelper)
    + escape_text (Erubis::RubyGenerator)
    + escape_text (Erubis::JavascriptGenerator)
    + escape_text (Erubis::SchemeGenerator)
    + escape_text (Erubis::OptimizedGenerator)
    + escape_text (Erubis::PerlGenerator)
    + escape_text (Erubis::Generator)
    + escape_text (Erubis::JavaGenerator)
    + escape_text (Erubis::CppGenerator)
    + escape_text (Erubis::PhpGenerator)
    + escape_text (Erubis::CGenerator)
    + escape_xml (Erubis::XmlHelper)
    + escape_xml2 (Erubis::XmlHelper)
    + escaped_expr (Erubis::CppGenerator)
    + escaped_expr (Erubis::CGenerator)
    + escaped_expr (Erubis::RubyGenerator)
    + escaped_expr (Erubis::Generator)
    + escaped_expr (Erubis::SchemeGenerator)
    + escaped_expr (Erubis::OptimizedGenerator)
    + evaluate (Erubis::TinyEruby)
    + evaluate (Erubis::PrintEnabledEnhancer)
    + evaluate (Erubis::PI::TinyEruby)
    + evaluate (Erubis::Evaluator)
    + evaluate (Erubis::RubyEvaluator)
    + execute (Erubis::Main)
    + h (Erubis::XmlHelper)
    + html_escape (Erubis::XmlHelper)
    + init_converter (Erubis::PI::Ephp)
    + init_converter (Erubis::PI::Converter)
    + init_converter (Erubis::PI::Escheme)
    + init_converter (Erubis::PI::Ecpp)
    + init_converter (Erubis::PI::Ejavascript)
    + init_converter (Erubis::PI::Ec)
    + init_converter (Erubis::PI::Eperl)
    + init_converter (Erubis::Converter)
    + init_converter (Erubis::OptimizedEruby)
    + init_converter (Erubis::PI::Eruby)
    + init_converter (Erubis::PI::Ejava)
    + init_converter (Erubis::Basic::Converter)
    + init_evaluator (Erubis::Evaluator)
    + init_generator (Erubis::PrefixedLineEnhancer)
    + init_generator (Erubis::Generator)
    + init_generator (Erubis::SchemeGenerator)
    + init_generator (Erubis::JavaGenerator)
    + init_generator (Erubis::CGenerator)
    + init_generator (Erubis::JavascriptGenerator)
    + init_generator (Erubis::RubyGenerator)
    + init_generator (Erubis::CppGenerator)
    + init_generator (Erubis::PhpGenerator)
    + init_generator (Erubis::PerlGenerator)
    + init_generator (Erubis::OptimizedGenerator)
    + init_properties (Erubis::Helpers::RailsHelper)
    + init_properties= (Erubis::Helpers::RailsHelper)
    + keys (Erubis::Context)
    + load_file (Erubis::Engine)
    + main (Erubis::Main)
    + new (Erubis::Main)
    + new (Erubis::PreprocessingEruby)
    + new (Erubis::PI::TinyEruby)
    + new (Erubis::TinyEruby)
    + new (Erubis::Context)
    + new (Erubis::Engine)
    + new (Erubis::BiPatternEnhancer)
    + not_implemented (Kernel)
    + pattern_regexp (Erubis::Basic::Converter)
    + pp_check_box (Erubis::Helpers::RailsFormHelper)
    + pp_collection_select (Erubis::Helpers::RailsFormHelper)
    + pp_country_select (Erubis::Helpers::RailsFormHelper)
    + pp_error_on (Erubis::Helpers::RailsFormHelper)
    + pp_file_field (Erubis::Helpers::RailsFormHelper)
    + pp_form_tag (Erubis::Helpers::RailsFormHelper)
    + pp_hidden_field (Erubis::Helpers::RailsFormHelper)
    + pp_image_submit_tag (Erubis::Helpers::RailsFormHelper)
    + pp_password_field (Erubis::Helpers::RailsFormHelper)
    + pp_radio_button (Erubis::Helpers::RailsFormHelper)
    + pp_render_partial (Erubis::Helpers::RailsFormHelper)
    + pp_select (Erubis::Helpers::RailsFormHelper)
    + pp_submit_tag (Erubis::Helpers::RailsFormHelper)
    + pp_tag_helper (Erubis::Helpers::RailsFormHelper)
    + pp_template_filename (Erubis::Helpers::RailsFormHelper)
    + pp_template_filename (Erubis::Helpers::RailsFormHelper)
    + pp_text_area (Erubis::Helpers::RailsFormHelper)
    + pp_text_field (Erubis::Helpers::RailsFormHelper)
    + pp_time_zone_select (Erubis::Helpers::RailsFormHelper)
    + preprocessing (Erubis::Helpers::RailsHelper)
    + preprocessing= (Erubis::Helpers::RailsHelper)
    + print (Erubis::PrintEnabledEnhancer)
    + process (Erubis::Engine)
    + process_proc (Erubis::Engine)
    + result (Erubis::PI::TinyEruby)
    + result (Erubis::Evaluator)
    + result (Erubis::RubyEvaluator)
    + result (Erubis::TinyEruby)
    + show_src (Erubis::Helpers::RailsHelper)
    + show_src= (Erubis::Helpers::RailsHelper)
    + switch_to_expr (Erubis::OptimizedGenerator)
    + switch_to_stmt (Erubis::OptimizedGenerator)
    + to_hash (Erubis::Context)
    + u (Erubis::XmlHelper)
    + update (Erubis::Context)
    + url_encode (Erubis::XmlHelper)
    +
    +
    + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/index.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/index.html new file mode 100644 index 0000000..8603883 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/index.html @@ -0,0 +1,24 @@ + + + + + + + RDoc Documentation + + + + + + + + + + + \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/rdoc-style.css b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/rdoc-style.css new file mode 100644 index 0000000..44c7b3d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc-api/rdoc-style.css @@ -0,0 +1,208 @@ + +body { + font-family: Verdana,Arial,Helvetica,sans-serif; + font-size: 90%; + margin: 0; + margin-left: 40px; + padding: 0; + background: white; +} + +h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; } +h1 { font-size: 150%; } +h2,h3,h4 { margin-top: 1em; } + +a { background: #eef; color: #039; text-decoration: none; } +a:hover { background: #039; color: #eef; } + +/* Override the base stylesheet's Anchor inside a table cell */ +td > a { + background: transparent; + color: #039; + text-decoration: none; +} + +/* and inside a section title */ +.section-title > a { + background: transparent; + color: #eee; + text-decoration: none; +} + +/* === Structural elements =================================== */ + +div#index { + margin: 0; + margin-left: -40px; + padding: 0; + font-size: 90%; +} + + +div#index a { + margin-left: 0.7em; +} + +div#index .section-bar { + margin-left: 0px; + padding-left: 0.7em; + background: #ccc; + font-size: small; +} + + +div#classHeader, div#fileHeader { + width: auto; + color: white; + padding: 0.5em 1.5em 0.5em 1.5em; + margin: 0; + margin-left: -40px; + border-bottom: 3px solid #006; +} + +div#classHeader a, div#fileHeader a { + background: inherit; + color: white; +} + +div#classHeader td, div#fileHeader td { + background: inherit; + color: white; +} + + +div#fileHeader { + background: #057; +} + +div#classHeader { + background: #048; +} + + +.class-name-in-header { + font-size: 180%; + font-weight: bold; +} + + +div#bodyContent { + padding: 0 1.5em 0 1.5em; +} + +div#description { + padding: 0.5em 1.5em; + background: #efefef; + border: 1px dotted #999; +} + +div#description h1,h2,h3,h4,h5,h6 { + color: #125;; + background: transparent; +} + +div#validator-badges { + text-align: center; +} +div#validator-badges img { border: 0; } + +div#copyright { + color: #333; + background: #efefef; + font: 0.75em sans-serif; + margin-top: 5em; + margin-bottom: 0; + padding: 0.5em 2em; +} + + +/* === Classes =================================== */ + +table.header-table { + color: white; + font-size: small; +} + +.type-note { + font-size: small; + color: #DEDEDE; +} + +.xxsection-bar { + background: #eee; + color: #333; + padding: 3px; +} + +.section-bar { + color: #333; + border-bottom: 1px solid #999; + margin-left: -20px; +} + + +.section-title { + background: #79a; + color: #eee; + padding: 3px; + margin-top: 2em; + margin-left: -30px; + border: 1px solid #999; +} + +.top-aligned-row { vertical-align: top } +.bottom-aligned-row { vertical-align: bottom } + +/* --- Context section classes ----------------------- */ + +.context-row { } +.context-item-name { font-family: monospace; font-weight: bold; color: black; } +.context-item-value { font-size: small; color: #448; } +.context-item-desc { color: #333; padding-left: 2em; } + +/* --- Method classes -------------------------- */ +.method-detail { + background: #efefef; + padding: 0; + margin-top: 0.5em; + margin-bottom: 1em; + border: 1px dotted #ccc; +} +.method-heading { + color: black; + background: #ccc; + border-bottom: 1px solid #666; + padding: 0.2em 0.5em 0 0.5em; +} +.method-signature { color: black; background: inherit; } +.method-name { font-weight: bold; } +.method-args { font-style: italic; } +.method-description { padding: 0 0.5em 0 0.5em; } + +/* --- Source code sections -------------------- */ + +a.source-toggle { font-size: 90%; } +div.method-source-code { + background: #262626; + color: #ffdead; + margin: 1em; + padding: 0.5em; + border: 1px dashed #999; + overflow: hidden; +} + +div.method-source-code pre { color: #ffdead; overflow: hidden; } + +/* --- Ruby keyword styles --------------------- */ + +.standalone-code { background: #221111; color: #ffdead; overflow: hidden; } + +.ruby-constant { color: #7fffd4; background: transparent; } +.ruby-keyword { color: #00ffff; background: transparent; } +.ruby-ivar { color: #eedd82; background: transparent; } +.ruby-operator { color: #00ffee; background: transparent; } +.ruby-identifier { color: #ffdead; background: transparent; } +.ruby-node { color: #ffa07a; background: transparent; } +.ruby-comment { color: #b22222; font-weight: bold; background: transparent; } +.ruby-regexp { color: #ffa07a; background: transparent; } +.ruby-value { color: #7fffd4; background: transparent; } \ No newline at end of file diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc/docstyle.css b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc/docstyle.css new file mode 100644 index 0000000..f05442d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc/docstyle.css @@ -0,0 +1,209 @@ +body { + background-color:#FFFFFF; +} + +.mainbody { + color:#333333; + line-height:150%; + margin: 5px 30px 5px 30px; +} + +a:link, a:active, a:hover { + color:#CC6600; +} + +a:visited { + color:#DD9900; +} + +p { + color:#333333; + line-height:150%; +} + +pre { + width: 100%; + line-height:130%; + white-space:pre; +} + +pre.program { + border-style:solid; + border-width:1px; + border-color:#6699FF; + color:#333333; + background-color:#DDEEFF; + padding:8px 9px 8px 9px; + margin:0px; + word-break:break-all; +} + +pre.terminal { + border-style:solid; + border-width:1; + border-color:#999999; + color:#333333; + background-color:#E0E0E0; + padding:9px 10px 9px 10px; + margin:0px; + word-break:break-all; +} + +pre.output { + border-style:solid; + border-width:1px; + border-color:#CCCCCC; + color:#333333; + background-color:#FFFFFF; + padding:8px 9px 8px 9px; + margin:0px; + word-break:break-all; +} + + +pre strong { + color: #990000; + font-weight: bold; +} + + +.program_caption { + margin-top: 20px; +} + +.terminal_caption { + margin-top: 20px; +} + +.output_caption { + margin-top: 20px; +} + + +ul,ol,dl { + /* margin:0px; */ + /* padding:0px; */ + color:#333333; + line-height:140%; +} + +.dt2, .dt3 { + font-weight:bold; +} + +.table1 { + padding:2px; + color:#333333; + background-color:#DDDDCC; + line-height:130%; + /* + border-width:1px; + border-style:solid; + border-color:#FFFFFF; + */ + margin:5; +} + +.th1, .th2 { + padding:1px; + color:#333333; + /* background-color:#DDDDCC; */ + background-color:#CCCCBB; + line-height:130%; +} + +.td1, .th2 { + padding:1px; + color:#333333; + background-color:#EEEEDD; + line-height:130%; +} + +.caption1, .caption2 { + /* font-size:x-small; */ + color:#333333; +} + +.table2 { + padding:1px; + color:#333333; + background-color:#DDDDCC; + line-height:130%; + /* + border-width:1px; + border-style:solid; + border-color:#FFFFFF; + */ + margin:5; +} + +h1, .chapter, .doctitle { + color:#333333; + font-weight:bold; + padding:30px 0px 10px 0px; +} + +h2, .section { + color:#333333; + font-weight:bold; + border-style:solid; + border-color:#6699FF; + border-width:0px 0px 2px 30px; + padding:10px 20px 0px 5px; +} + +h3, .subsection { + color:#333333; + font-weight:bold; + border-style:solid; + border-color:#6699FF; + border-width: 0px 0px 0px 15px; + padding: 10px 20px 0px 5px; +} + +.em { + font-weight:bold; +} + +.toc { + /* font-size:small; */ + /* line-height:100%; */ +} + +.footnote { + font-size:small; +} + +div.note, div.tips { + background-color:#FFFFDD; + border-style:solid; + border-width:0px 1px 0px 1px; + border-color:#DDDD66; + color:#333300; + /* font-size:small; */ + line-height:120%; + margin-top: 10px; + padding: 5px 20px 5px 20px; +} + +div.note span.caption, div.tips span.caption { + color: #C60; +} + +.figure { + /* + border-width:1px; + border-color:#DDDD66; + white-space:pre; + */ +} + +strong { + color: #630; + font-weight; bold; +} + + +em { + font-style: italic; +} diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc/users-guide.html b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc/users-guide.html new file mode 100644 index 0000000..60cb672 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/doc/users-guide.html @@ -0,0 +1,3551 @@ + + + + + Erubis Users' Guide + + + + + + +
    +
    + +

    Erubis Users' Guide

    +

    release: 2.7.0 +

    + +

    Preface

    +

    Erubis is an implementation of eRuby. +It has the following features. +

    +
      +
    • Very fast, almost three times faster than ERB and about ten percent faster than eruby (implemented in C) +
    • +
    • File caching of converted Ruby script support +
    • +
    • Auto escaping support +
    • +
    • Auto trimming spaces around '<% %>' +
    • +
    • Embedded pattern changeable (default '<% %>') +
    • +
    • Enable to handle Processing Instructions (PI) as embedded pattern (ex. '<?rb ... ?>') +
    • +
    • Multi-language support (Ruby/PHP/C/Java/Scheme/Perl/Javascript) +
    • +
    • Context object available and easy to combine eRuby template with YAML datafile +
    • +
    • Print statement available +
    • +
    • Easy to expand and customize in subclass +
    • +
    • Ruby on Rails support +
    • +
    • mod_ruby support|#topcs-modruby +
    • +
    +

    Erubis is implemented in pure Ruby. It requires Ruby 1.8 or higher. +Erubis now supports Ruby 1.9. +

    + +

    Table of Contents

    + +
    + + +
    + + + +

    Installation

    +
      +
    • If you have installed RubyGems, just type gem install --remote erubis. +
      $ sudo gem install --remote erubis
      +
      +
    • +
    +
      +
    • Else install abstract at first, + and download erubis_X.X.X.tar.bz2 and install it by setup.rb. +
      $ tar xjf abstract_X.X.X.tar.bz2
      +$ cd abstract_X.X.X/
      +$ sudo ruby setup.rb
      +$ cd ..
      +$ tar xjf erubis_X.X.X.tar.bz2
      +$ cd erubis_X.X.X/
      +$ sudo ruby setup.rb
      +
      +
    • +
    +
      +
    • (Optional) 'contrib/inline-require' enables you to merge 'lib/**/*.rb' into 'bin/erubis'. +
      $ tar xjf erubis_X.X.X.tar.bz2
      +$ cd erubis_X.X.X/
      +$ unset RUBYLIB
      +$ contrib/inline-require -I lib bin/erubis > contrib/erubis
      +
      +
    • +
    +
    + + + +

    Tutorial

    + +

    Basic Example

    +

    Here is a basic example of Erubis. +

    + +
    +example1.eruby
    +
    <ul>
    +  <% for item in list %>
    +  <li><%= item %></li>
    +  <% end %>
    +  <%# here is ignored because starting with '#' %>
    +</ul>
    +
    + +
    +example1.rb
    +
    require 'erubis'
    +input = File.read('example1.eruby')
    +eruby = Erubis::Eruby.new(input)    # create Eruby object
    +
    +puts "---------- script source ---"
    +puts eruby.src                      # print script source
    +
    +puts "---------- result ----------"
    +list = ['aaa', 'bbb', 'ccc']
    +puts eruby.result(binding())        # get result
    +## or puts eruby.result(:list=>list)  # or pass Hash instead of Binding
    +
    +## # or
    +## eruby = Erubis::Eruby.new
    +## input = File.read('example1.eruby')
    +## src = eruby.convert(input)
    +## eval src
    +
    + +
    +output
    +
    $ ruby example1.rb
    +---------- script source ---
    +_buf = ''; _buf << '<ul>
    +';   for item in list 
    + _buf << '  <li>'; _buf << ( item ).to_s; _buf << '</li>
    +';   end 
    +
    + _buf << '</ul>
    +';
    +_buf.to_s
    +---------- result ----------
    +<ul>
    +  <li>aaa</li>
    +  <li>bbb</li>
    +  <li>ccc</li>
    +</ul>
    +
    +

    Erubis has command 'erubis'. Command-line option '-x' shows the compiled source code of eRuby script. +

    + +
    +example of command-line option '-x'
    +
    $ erubis -x example1.eruby
    +_buf = ''; _buf << '<ul>
    +';   for item in list 
    + _buf << '  <li>'; _buf << ( item ).to_s; _buf << '</li>
    +';   end 
    +
    + _buf << '</ul>
    +';
    +_buf.to_s
    +
    +
    + + + +

    Trimming Spaces

    +

    Erubis deletes spaces around '<% %>' automatically, while it leaves spaces around '<%= %>'. +

    + +
    +example2.eruby
    +
    <ul>
    +  <% for item in list %>      # trimmed
    +  <li>
    +    <%= item %>               # not trimmed
    +  </li>
    +  <% end %>                   # trimmed
    +</ul>
    +
    + +
    +compiled source code
    +
    $ erubis -x example2.eruby
    +_buf = ''; _buf << '<ul>
    +';   for item in list 
    + _buf << '  <li>
    +    '; _buf << ( item ).to_s; _buf << '
    +'; _buf << '  </li>
    +';   end 
    + _buf << '</ul>
    +';
    +_buf.to_s
    +
    +

    If you want leave spaces around '<% %>', add command-line property '--trim=false'. +

    + +
    +compiled source code with command-line property '--trim=false'
    +
    $ erubis -x --trim=false example2.eruby
    +_buf = ''; _buf << '<ul>
    +'; _buf << '  '; for item in list ; _buf << '
    +'; _buf << '  <li>
    +    '; _buf << ( item ).to_s; _buf << '
    +'; _buf << '  </li>
    +'; _buf << '  '; end ; _buf << '
    +'; _buf << '</ul>
    +';
    +_buf.to_s
    +
    +

    Or add option :trim=>false to Erubis::Eruby.new(). +

    + +
    +example2.rb
    +
    require 'erubis'
    +input = File.read('example2.eruby')
    +eruby = Erubis::Eruby.new(input, :trim=>false)
    +
    +puts "----- script source ---"
    +puts eruby.src                            # print script source
    +
    +puts "----- result ----------"
    +list = ['aaa', 'bbb', 'ccc']
    +puts eruby.result(binding())              # get result
    +
    + +
    +output
    +
    $ ruby example2.rb
    +----- script source ---
    +_buf = ''; _buf << '<ul>
    +'; _buf << '  '; for item in list ; _buf << '
    +'; _buf << '  <li>
    +    '; _buf << ( item ).to_s; _buf << '
    +'; _buf << '  </li>
    +'; _buf << '  '; end ; _buf << '
    +'; _buf << '</ul>
    +';
    +_buf.to_s
    +----- result ----------
    +<ul>
    +  
    +  <li>
    +    aaa
    +  </li>
    +  
    +  <li>
    +    bbb
    +  </li>
    +  
    +  <li>
    +    ccc
    +  </li>
    +  
    +</ul>
    +
    +
    + + + +

    Escape

    +

    Erubis has ability to escape (sanitize) expression. +Erubis::Eruby class act as the following: +

    +
      +
    • <%= expr %> - not escaped. +
    • +
    • <%== expr %> - escaped. +
    • +
    • <%=== expr %> - out to $stderr. +
    • +
    • <%==== expr %> - ignored. +
    • +
    +

    Erubis::EscapedEruby(*1) class handle '<%= %>' as escaped and '<%== %>' as not escaped. +It means that using Erubis::EscapedEruby you can escape expression by default. +Also Erubis::XmlEruby class (which is equivalent to Erubis::EscapedEruby) is provided for compatibility with Erubis 1.1. +

    + +
    +example3.eruby
    +
    <% for item in list %>
    +  <p><%= item %></p>
    +  <p><%== item %></p>
    +  <p><%=== item %></p>
    +
    +<% end %>
    +
    + +
    +example3.rb
    +
    require 'erubis'
    +input = File.read('example3.eruby')
    +eruby = Erubis::EscapedEruby.new(input)    # or Erubis::XmlEruby
    +
    +puts "----- script source ---"
    +puts eruby.src                             # print script source
    +
    +puts "----- result ----------"
    +list = ['<aaa>', 'b&b', '"ccc"']
    +puts eruby.result(binding())               # get result
    +
    + +
    +output
    +
    $ ruby example3.rb 2> stderr.log
    +----- script source ---
    +_buf = ''; for item in list 
    + _buf << '  <p>'; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '</p>
    +  <p>'; _buf << ( item ).to_s; _buf << '</p>
    +  <p>'; $stderr.puts("*** debug: item=#{(item).inspect}"); _buf << '</p>
    +
    +'; end 
    +_buf.to_s
    +----- result ----------
    +  <p>&lt;aaa&gt;</p>
    +  <p><aaa></p>
    +  <p></p>
    +
    +  <p>b&amp;b</p>
    +  <p>b&b</p>
    +  <p></p>
    +
    +  <p>&quot;ccc&quot;</p>
    +  <p>"ccc"</p>
    +  <p></p>
    +
    +$ cat stderr.log
    +*** debug: item="<aaa>"
    +*** debug: item="b&b"
    +*** debug: item="\"ccc\""
    +
    +

    The command-line option '-e' will do the same action as Erubis::EscapedEruby. +This option is available for any language. +

    + +
    $ erubis -l ruby -e example3.eruby
    +_buf = ''; for item in list 
    + _buf << '  <p>'; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '</p>
    +  <p>'; _buf << ( item ).to_s; _buf << '</p>
    +  <p>'; $stderr.puts("*** debug: item=#{(item).inspect}"); _buf << '</p>
    +
    +'; end 
    +_buf.to_s
    +
    +

    Escaping function (default 'Erubis::XmlHelper.escape_xml()') can be changed by command-line property '--escapefunc=xxx' or by overriding Erubis::Eruby#escaped_expr() in subclass. +

    +
    +example to override Erubis::Eruby#escaped_expr()
    +
    class CGIEruby < Erubis::Eruby
    +  def escaped_expr(code)
    +    return "CGI.escapeHTML((#{code.strip}).to_s)"
    +    #return "h(#{code.strip})"
    +  end
    +end
    +
    +class LatexEruby < Erubi::Eruby
    +  def escaped_expr(code)
    +    return "(#{code}).gsub(/[%\\]/,'\\\\\&')"
    +  end
    +end
    +
    +
    +
    +
    (*1)
    +
    Erubis::EscapedEruby class includes Erubis::EscapeEnhancer which swtches the action of '<%= %>' and '<%== %>'.
    +
    +
    +
    + + + +

    Embedded Pattern

    +

    You can change embedded pattern '<% %>' to another by command-line option '-p' or option ':pattern=>...' of Erubis::Eruby.new(). +

    + +
    +example4.eruby
    +
    <!--% for item in list %-->
    +  <p><!--%= item %--></p>
    +<!--% end %-->
    +
    + +
    +compiled source code with command-line option '-p'
    +
    $ erubis -x -p '<!--% %-->' example4.eruby
    +_buf = ''; for item in list 
    + _buf << '  <p>'; _buf << ( item ).to_s; _buf << '</p>
    +'; end 
    +_buf.to_s
    +
    + +
    +example4.rb
    +
    require 'erubis'
    +input = File.read('example4.eruby')
    +eruby = Erubis::Eruby.new(input, :pattern=>'<!--% %-->')
    +                                      # or '<(?:!--)?% %(?:--)?>'
    +
    +puts "---------- script source ---"
    +puts eruby.src                            # print script source
    +
    +puts "---------- result ----------"
    +list = ['aaa', 'bbb', 'ccc']
    +puts eruby.result(binding())              # get result
    +
    + +
    +output
    +
    $ ruby example4.rb
    +---------- script source ---
    +_buf = ''; for item in list 
    + _buf << '  <p>'; _buf << ( item ).to_s; _buf << '</p>
    +'; end 
    +_buf.to_s
    +---------- result ----------
    +  <p>aaa</p>
    +  <p>bbb</p>
    +  <p>ccc</p>
    +
    +

    It is able to specify regular expression with :pattern option. +Notice that you must use '(?: )' instead of '( )' for grouping. +For example, '<(!--)?% %(--)?>' will not work while '<(?:!--)?% %(?:--)?>' will work. +

    +
    + + + +

    Context Object

    +

    Context object is a set of data which are used in eRuby script. +Using context object makes clear which data to be used. +In Erubis, Hash object and Erubis::Context object are available as context object. +

    +

    Context data can be accessible via instance variables in eRuby script. +

    + +
    +example5.eruby
    +
    <span><%= @val %></span>
    +<ul>
    + <% for item in @list %>
    +  <li><%= item %></li>
    + <% end %>
    +</ul>
    +
    + +
    +example5.rb
    +
    require 'erubis'
    +input = File.read('example5.eruby')
    +eruby = Erubis::Eruby.new(input)      # create Eruby object
    +
    +## create context object
    +## (key means var name, which may be string or symbol.)
    +context = {
    +  :val   => 'Erubis Example',
    +  'list' => ['aaa', 'bbb', 'ccc'],
    +}
    +## or
    +# context = Erubis::Context.new()
    +# context['val'] = 'Erubis Example'
    +# context[:list] = ['aaa', 'bbb', 'ccc'],
    +
    +puts eruby.evaluate(context)         # get result
    +
    + +
    +output
    +
    $ ruby example5.rb
    +<span>Erubis Example</span>
    +<ul>
    +  <li>aaa</li>
    +  <li>bbb</li>
    +  <li>ccc</li>
    +</ul>
    +
    +

    The difference between Erubis#result(binding) and Erubis#evaluate(context) is that the former invokes 'eval @src, binding' and the latter invokes 'context.instance_eval @src'. +This means that data is passed into eRuby script via local variables when Eruby::binding() is called, or passed via instance variables when Eruby::evaluate() is called. +

    +

    Here is the definition of Erubis#result() and Erubis#evaluate(). +

    +
    +definition of result(binding) and evaluate(context)
    +
    def result(_binding=TOPLEVEL_BINDING)
    +  if _binding.is_a?(Hash)
    +    # load hash data as local variable
    +    _h = _binding
    +    _binding = binding()
    +    eval _h.collect{|k,v| "#{k} = _h[#{k.inspect}];"}.join, _binding
    +  end
    +  return eval(@src, _binding)
    +end
    +
    +def evaluate(_context=Erubis::Context.new)
    +  if _context.is_a?(Hash)
    +    # convert hash object to Context object
    +    _hash = _context
    +    _context = Erubis::Context.new
    +    _hash.each {|k, v| _context[k] = v }
    +  end
    +  return _context.instance_eval(@src)
    +end
    +
    +

    instance_eval() is defined at Object class so it is able to use any object as a context object as well as Hash or Erubis::Context. +

    + +
    +example6.rb
    +
    class MyData
    +  attr_accessor :val, :list
    +end
    +
    +## any object can be a context object
    +mydata = MyData.new
    +mydata.val = 'Erubis Example'
    +mydata.list = ['aaa', 'bbb', 'ccc']
    +
    +require 'erubis'
    +eruby = Erubis::Eruby.new(File.read('example5.eruby'))
    +puts eruby.evaluate(mydata)
    +
    + +
    +output
    +
    $ ruby example6.rb
    +<span>Erubis Example</span>
    +<ul>
    +  <li>aaa</li>
    +  <li>bbb</li>
    +  <li>ccc</li>
    +</ul>
    +
    +

    It is recommended to use 'Erubis::Eruby#evaluate(context)' rather than 'Erubis::Eruby#result(binding())' because the latter has some problems. +See evaluate(context) v.s. result(binding) section for details. +

    +
    + + + +

    Context Data File

    +

    Command-line option '-f' specifies context data file. +Erubis load context data file and use it as context data. +Context data file can be YAML file ('*.yaml' or '*.yml') or Ruby script ('*.rb'). +

    + +
    +example7.eruby
    +
    <h1><%= @title %></h1>
    +<ul>
    + <% for user in @users %>
    +  <li>
    +    <a href="mailto:<%= user['mail']%>"><%= user['name'] %></a>
    +  </li>
    + <% end %>
    +</ul>
    +
    + +
    +context.yaml
    +
    title: Users List
    +users:
    +  - name:  foo
    +    mail:  foo@mail.com
    +  - name:  bar
    +    mail:  bar@mail.net
    +  - name:  baz
    +    mail:  baz@mail.org
    +
    + +
    +context.rb
    +
    @title = 'Users List'
    +@users = [
    +   { 'name'=>'foo', 'mail'=>'foo@mail.com' },
    +   { 'name'=>'bar', 'mail'=>'bar@mail.net' },
    +   { 'name'=>'baz', 'mail'=>'baz@mail.org' },
    +]
    +
    + +
    +example of command-line option '-f'
    +
    $ erubis -f context.yaml example7.eruby
    +<h1>Users List</h1>
    +<ul>
    +  <li>
    +    <a href="mailto:foo@mail.com">foo</a>
    +  </li>
    +  <li>
    +    <a href="mailto:bar@mail.net">bar</a>
    +  </li>
    +  <li>
    +    <a href="mailto:baz@mail.org">baz</a>
    +  </li>
    +</ul>
    +$ erubis -f context.rb example7.eruby
    +<h1>Users List</h1>
    +<ul>
    +  <li>
    +    <a href="mailto:foo@mail.com">foo</a>
    +  </li>
    +  <li>
    +    <a href="mailto:bar@mail.net">bar</a>
    +  </li>
    +  <li>
    +    <a href="mailto:baz@mail.org">baz</a>
    +  </li>
    +</ul>
    +
    +

    Command-line option '-S' converts keys of mapping in YAML data file from string into symbol. +Command-line option '-B' invokes 'Erubis::Eruby#result(binding())' instead of 'Erubis::Eruby#evaluate(context)'. +

    +
    + + + +

    Context Data String

    +

    Command-line option '-c str' enables you to specify context data in command-line. +str can be YAML flow-style or Ruby code. +

    + +
    +example8.eruby
    +
    <h1><%= @title %></h1>
    +<ul>
    +<% for item in @list %>
    + <li><%= item %></li>
    +<% end %>
    +</ul>
    +
    + +
    +example of YAML flow style
    +
    $ erubis -c '{title: Example, list: [AAA, BBB, CCC]}' example8.eruby
    +<h1>Example</h1>
    +<ul>
    + <li>AAA</li>
    + <li>BBB</li>
    + <li>CCC</li>
    +</ul>
    +
    + +
    +example of Ruby code
    +
    $ erubis -c '@title="Example"; @list=%w[AAA BBB CCC]' example8.eruby
    +<h1>Example</h1>
    +<ul>
    + <li>AAA</li>
    + <li>BBB</li>
    + <li>CCC</li>
    +</ul>
    +
    +
    + + + +

    Preamble and Postamble

    +

    The first line ('_buf = '';') in the compiled source code is called preamble +and the last line ('_buf.to_s') is called postamble. +

    +

    Command-line option '-b' skips the output of preamble and postamble. +

    + +
    +example9.eruby
    +
    <% for item in @list %>
    + <b><%= item %></b>
    +<% end %>
    +
    + +
    +compiled source code with and without command-line option '-b'
    +
    $ erubis -x example9.eruby
    +_buf = ''; for item in @list 
    + _buf << ' <b>'; _buf << ( item ).to_s; _buf << '</b>
    +'; end 
    +_buf.to_s
    +$ erubis -x -b example9.eruby
    + for item in @list 
    + _buf << ' <b>'; _buf << ( item ).to_s; _buf << '</b>
    +'; end 
    +
    +

    Erubis::Eruby.new option ':preamble=>false' and ':postamble=>false' also suppress output of preamble or postamle. +

    + +
    +example9.rb
    +
    require 'erubis'
    +input = File.read('example9.eruby')
    +eruby1 = Erubis::Eruby.new(input)
    +eruby2 = Erubis::Eruby.new(input, :preamble=>false, :postamble=>false)
    +
    +puts eruby1.src   # print preamble and postamble
    +puts "--------------"
    +puts eruby2.src   # don't print preamble and postamble
    +
    + +
    +output
    +
    $ ruby example9.rb
    +_buf = ''; for item in @list 
    + _buf << ' <b>'; _buf << ( item ).to_s; _buf << '</b>
    +'; end 
    +_buf.to_s
    +--------------
    + for item in @list 
    + _buf << ' <b>'; _buf << ( item ).to_s; _buf << '</b>
    +'; end 
    +
    +
    + + + +

    Processing Instruction (PI) Converter

    +

    Erubis can parse Processing Instructions (PI) as embedded pattern. +

    +
      +
    • '<?rb ... ?>' represents Ruby statement. +
    • +
    • '@{...}@' represents escaped expression value. +
    • +
    • '@!{...}@' represents normal expression value. +
    • +
    • '@!!{...}@' prints expression value to standard output. +
    • +
    • (experimental) '<%= ... %>' is also available to print expression value. +
    • +
    +

    This is more useful than basic embedded pattern ('<% ... >') because PI doesn't break XML or HTML at all. +For example the following XHTML file is well-formed and HTML validator got no errors on this example. +

    + +
    +example10.xhtml
    +
    <?xml version="1.0" ?>
    +<?rb
    +  lang = 'en'
    +  list = ['<aaa>', 'b&b', '"ccc"']
    +?>
    +<html lang="@!{lang}@">
    + <body>
    +  <ul>
    +  <?rb for item in list ?>
    +   <li>@{item}@</li>
    +  <?rb end ?>
    +  </ul>
    + </body>
    +</html>
    +
    +

    If the command-line property '--pi=name' is specified, erubis command parses input with PI converter. +If name is omitted then the following name is used according to '-l lang'. +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    '-l' optionPI name
    -l ruby<?rb ... ?>
    -l php<?php ... ?>
    -l perl<?perl ... ?>
    -l java<?java ... ?>
    -l javascript<?js ... ?>
    -l scheme<?scheme ... ?>
    +
    + +
    +output
    +
    $ erubis -x --pi example10.xhtml
    +_buf = ''; _buf << '<?xml version="1.0" ?>
    +';
    +  lang = 'en'
    +  list = ['<aaa>', 'b&b', '"ccc"']
    +
    + _buf << '<html lang="'; _buf << (lang).to_s; _buf << '">
    + <body>
    +  <ul>
    +';   for item in list 
    + _buf << '   <li>'; _buf << Erubis::XmlHelper.escape_xml(item); _buf << '</li>
    +';   end 
    + _buf << '  </ul>
    + </body>
    +</html>
    +';
    +_buf.to_s
    +
    +

    Expression character can be changeable by command-line property '--embchar=char. Default is '@'. +

    +

    Use Erubis::PI::Eruby instead of Erubis::Eruby if you want to use PI as embedded pattern. +

    + +
    +example10.rb
    +
    require 'erubis'
    +input = File.read('example10.xhtml')
    +eruby = Erubis::PI::Eruby.new(input)
    +print eruby.src
    +
    + +
    +output
    +
    $ ruby example10.rb
    +_buf = ''; _buf << '<?xml version="1.0" ?>
    +';
    +  lang = 'en'
    +  list = ['<aaa>', 'b&b', '"ccc"']
    +
    + _buf << '<html lang="'; _buf << (lang).to_s; _buf << '">
    + <body>
    +  <ul>
    +';   for item in list 
    + _buf << '   <li>'; _buf << Erubis::XmlHelper.escape_xml(item); _buf << '</li>
    +';   end 
    + _buf << '  </ul>
    + </body>
    +</html>
    +';
    +_buf.to_s
    +
    +

    (experimental) Erubis supports '<%= ... %>' pattern with PI pattern. +

    +
    +example of Rails view template
    +
    <table>
    +  <tr>
    +<?rb for item in @list ?>
    +    <td>@{item.id}@</td>
    +    <td>@{item.name}@</td>
    +    <td>
    +       <%= link_to 'Destroy', {:action=>'destroy', :id=>item.id},
    +                       :confirm=>'Are you OK?' %>
    +    </td>
    +<?rb end ?>
    +  </tr>
    +</table>
    +
    +
    + + + +

    Retrieve Ruby Code

    +

    Similar to '-x', ommand-line option '-X' shows converted Ruby source code. +The difference between '-x' and 'X' is that the former converts text part but the latter ignores it. +It means that you can retrieve Ruby code from eRuby script by '-X' option. +

    +

    For example, see the following eRuby script. +This is some complex, so it is difficult to grasp the program code. +

    + +
    +example11.rhtml
    +
    <?xml version="1.0" encoding="UTF-8"?>
    +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    +          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    +  <body>
    +    <h3>List</h3>
    +    <% if @list.nil? || @list.empty? %>
    +    <p>not found.</p>
    +    <% else %>
    +    <table>
    +      <tbody>
    +        <% @list.each_with_index do |item, i| %>
    +        <tr bgcolor="<%= i % 2 == 0 ? '#FCC' : '#CCF' %>">
    +          <td><%= item %></td>
    +        </tr>
    +        <% end %>
    +      </tbody>
    +    </table>
    +    <% end %>
    +  </body>
    +</html>
    +
    +

    Command-line option '-X' extracts only the ruby code from eRuby script. +

    + +
    +result
    +
    $ erubis -X example11.rhtml
    +_buf = '';
    +
    +
    +
    +
    +
    +     if @list.nil? || @list.empty? 
    +
    +     else 
    +
    +
    +         @list.each_with_index do |item, i| 
    +                      _buf << ( i % 2 == 0 ? '#FCC' : '#CCF' ).to_s;
    +               _buf << ( item ).to_s;
    +
    +         end 
    +
    +
    +     end 
    +
    +
    +_buf.to_s
    +
    +

    Command-line option '-C' (cmpact) deletes empty lines. +

    + +
    +result
    +
    $ erubis -XC example11.rhtml
    +_buf = '';
    +     if @list.nil? || @list.empty? 
    +     else 
    +         @list.each_with_index do |item, i| 
    +                      _buf << ( i % 2 == 0 ? '#FCC' : '#CCF' ).to_s;
    +               _buf << ( item ).to_s;
    +         end 
    +     end 
    +_buf.to_s
    +
    +

    Option '-U' (unique) converts empty lines into a line. +

    + +
    +result
    +
    $ erubis -XU example11.rhtml
    +_buf = '';
    +
    +     if @list.nil? || @list.empty? 
    +
    +     else 
    +
    +         @list.each_with_index do |item, i| 
    +                      _buf << ( i % 2 == 0 ? '#FCC' : '#CCF' ).to_s;
    +               _buf << ( item ).to_s;
    +
    +         end 
    +
    +     end 
    +
    +_buf.to_s
    +
    +

    Option '-N' (number) adds line number. +It is available with '-C' or '-U'. +

    + +
    +result
    +
    $ erubis -XNU example11.rhtml
    +    1:  _buf = '';
    +
    +    7:       if @list.nil? || @list.empty? 
    +
    +    9:       else 
    +
    +   12:           @list.each_with_index do |item, i| 
    +   13:                        _buf << ( i % 2 == 0 ? '#FCC' : '#CCF' ).to_s;
    +   14:                 _buf << ( item ).to_s;
    +
    +   16:           end 
    +
    +   19:       end 
    +
    +   22:  _buf.to_s
    +
    +

    Command-line option '-X' is available with PHP script. +

    + +
    +example11.php
    +
    <?xml version="1.0"?>
    +<html>
    +  <body>
    +    <h3>List</h3>
    +    <?php if (!$list) { ?>
    +    <p>not found.</p>
    +    <?php } else { ?>
    +    <table>
    +      <tbody>
    +        <?php $i = 0; ?>
    +        <?php foreach ($list as $item) { ?>
    +        <tr bgcolor="<?php echo ++$i % 2 == 1 ? '#FCC' : '#CCF'; ?>">
    +          <td><?php echo $item; ?></td>
    +        </tr>
    +        <?php } ?>
    +      </tbody>
    +    </table>
    +    <?php } ?>
    +  </body>
    +</html>
    +
    + +
    +result
    +
    $ erubis -XNU -l php --pi=php --trim=false example11.php
    +
    +    5:      <?php if (!$list) { ?>
    +
    +    7:      <?php } else { ?>
    +
    +   10:          <?php $i = 0; ?>
    +   11:          <?php foreach ($list as $item) { ?>
    +   12:                       <?php echo ++$i % 2 == 1 ? '#FCC' : '#CCF'; ?>
    +   13:                <?php echo $item; ?>
    +
    +   15:          <?php } ?>
    +
    +   18:      <?php } ?>
    +
    +
    +
    + + +
    + + + +

    Enhancer

    +

    Enhancer is a module to add a certain feature into Erubis::Eruby class. +Enhancer may be language-independent or only for Erubis::Eruby class. +

    +

    To use enhancers, define subclass and include them. +The folloing is an example to use EscapeEnhancer, PercentLineEnhancer, and BiPatternEnhancer. +

    +
    class MyEruby < Erubis::Eruby
    +  include EscapeEnhancer
    +  include PercentLineEnhancer
    +  include BiPatternEnhancer
    +end
    +
    +

    You can specify enhancers in command-line with option '-E'. +The following is an example to use some enhancers in command-line. +

    +
    $ erubis -xE Escape,PercentLine,BiPattern example.eruby
    +
    +

    The following is the list of enhancers. +

    +
    +
    +EscapeEnhander (language-independent)
    +
    + Switch '<%= %>' to escaped and '<%== %>' to unescaped. +
    +
    +StdoutEnhancer (only for Eruby)
    +
    + Use $stdout instead of array buffer. +
    +
    +PrintOutEnhancer (only for Eruby)
    +
    + Use "print(...)" statement insead of "_buf << ...". +
    +
    +PrintEnabledEnhancer (only for Eruby)
    +
    + Enable to use print() in '<% ... %>'. +
    +
    +ArrayEnhancer (only for Eruby)
    +
    + Return array of string instead of returning string. +
    +
    +ArrayBufferEnhancer (only for Eruby)
    +
    + Use array buffer. It is a little slower than StringBufferEnhancer. +
    +
    +StringBufferEnhancer (only for Eruby)
    +
    + Use string buffer. This is included in Erubis::Eruby by default. +
    +
    +ErboutEnhancer (only for Eruby)
    +
    + Set '_erbout = _buf = "";' to be compatible with ERB. +
    +
    +NoTextEnhancer (language-independent)
    +
    + Print embedded code only and ignore normal text. +
    +
    +NoCodeEnhancer (language-independent)
    +
    + Print normal text only and ignore code. +
    +
    +SimplifyEnhancer (language-independent)
    +
    + Make compile faster but don't trim spaces around '<% %>'. +
    +
    +BiPatternEnhancer (language-independent)
    +
    + [experimental] Enable to use another embedded pattern with '<% %>'. +
    +
    +PercentLineEnhancer (language-independent)
    +
    + Regard lines starting with '%' as Ruby code. This is for compatibility with eruby and ERB. +
    +
    +HeaderFooterEnhancer (language-independent)
    +
    + [experimental] Enable you to add header and footer in eRuby script. +
    +
    +InterpolationEnhancer (only for Eruby)
    +
    + [experimental] convert '<p><%= text %></p>' into '_buf << %Q`<p>#{text}</p>`'. +
    +
    +DeleteIndentEnhancer (language-independent)
    +
    + [experimental] delete indentation of HTML file and eliminate page size. +
    +
    +

    If you required 'erubis/engine/enhanced', Eruby subclasses which include each enhancers are defined. +For example, class BiPatternEruby includes BiPatternEnhancer. +

    + +

    EscapeEnhancer

    +

    EscapeEnhancer switches '<%= ... %>' to escaped and '<%== ... %>' to unescaped. +

    + +
    +example.eruby
    +
    <div>
    +<% for item in list %>
    +  <p><%= item %></p>
    +  <p><%== item %></p>
    +<% end %>
    +</div>
    +
    + +
    +compiled source code
    +
    $ erubis -xE Escape example.eruby
    +_buf = ''; _buf << '<div>
    +'; for item in list 
    + _buf << '  <p>'; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '</p>
    +  <p>'; _buf << ( item ).to_s; _buf << '</p>
    +'; end 
    + _buf << '</div>
    +';
    +_buf.to_s
    +
    +

    EscapeEnhancer is language-independent. +

    +
    + + + +

    StdoutEnhancer

    +

    StdoutEnhancer use $sdtdout instead of array buffer. +Therefore, you can use 'print' statement in embedded ruby code. +

    + +
    +compiled source code
    +
    $ erubis -xE Stdout example.eruby
    +_buf = $stdout; _buf << '<div>
    +'; for item in list 
    + _buf << '  <p>'; _buf << ( item ).to_s; _buf << '</p>
    +  <p>'; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '</p>
    +'; end 
    + _buf << '</div>
    +';
    +''
    +
    +

    StdoutEnhancer is only for Eruby. +

    +
    + + + +

    PrintOutEnhancer

    +

    PrintOutEnhancer makes compiled source code to use 'print(...)' instead of '_buf << ...'. +

    + +
    +compiled source code
    +
    $ erubis -xE PrintOut example.eruby
    + print '<div>
    +'; for item in list 
    + print '  <p>'; print(( item ).to_s); print '</p>
    +  <p>'; print Erubis::XmlHelper.escape_xml( item ); print '</p>
    +'; end 
    + print '</div>
    +';
    +
    +

    PrintOutEnhancer is only for Eruby. +

    +
    + + + +

    PrintEnabledEnhancer

    +

    PrintEnabledEnhancer enables you to use print() method in '<% ... %>'. +

    + +
    +printenabled-example.eruby
    +
    <% for item in @list %>
    +  <b><% print item %></b>
    +<% end %>
    +
    + +
    +printenabled-example.rb
    +
    require 'erubis'
    +class PrintEnabledEruby < Erubis::Eruby
    +  include Erubis::PrintEnabledEnhancer
    +end
    +input = File.read('printenabled-example.eruby')
    +eruby = PrintEnabledEruby.new(input)
    +list = ['aaa', 'bbb', 'ccc']
    +print eruby.evaluate(:list=>list)
    +
    + +
    +output result
    +
    $ ruby printenabled-example.rb
    +  <b>aaa</b>
    +  <b>bbb</b>
    +  <b>ccc</b>
    +
    +

    Notice to use Eruby#evaluate() and not to use Eruby#result(), +because print() method in '<% ... %>' invokes not Kernel#print() but PrintEnabledEnhancer#print(). +

    +

    PrintEnabledEnhancer is only for Eruby. +

    +
    + + + +

    ArrayEnhancer

    +

    ArrayEnhancer makes Eruby to return an array of strings. +

    + +
    +compiled source code
    +
    $ erubis -xE Array example.eruby
    +_buf = []; _buf << '<div>
    +'; for item in list 
    + _buf << '  <p>'; _buf << ( item ).to_s; _buf << '</p>
    +  <p>'; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '</p>
    +'; end 
    + _buf << '</div>
    +';
    +_buf
    +
    +

    ArrayEnhancer is only for Eruby. +

    +
    + + + +

    ArrayBufferEnhancer

    +

    ArrayBufferEnhancer makes Eruby to use array buffer. +Array buffer is a litte slower than String buffer. +

    +

    ArrayBufferEnhancer is only for Eruby. +

    + +
    +compiled source code
    +
    $ erubis -xE ArrayBuffer example.eruby
    +_buf = []; _buf << '<div>
    +'; for item in list 
    + _buf << '  <p>'; _buf << ( item ).to_s; _buf << '</p>
    +  <p>'; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '</p>
    +'; end 
    + _buf << '</div>
    +';
    +_buf.join
    +
    +
    + + + +

    StringBufferEnhancer

    +

    StringBufferEnhancer makes Eruby to use string buffer. +String buffer is a little faster than array buffer. +Erubis::Eruby includes this enhancer by default. +

    + +
    +compiled source code
    +
    $ erubis -xE StringBuffer example.eruby
    +_buf = ''; _buf << '<div>
    +'; for item in list 
    + _buf << '  <p>'; _buf << ( item ).to_s; _buf << '</p>
    +  <p>'; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '</p>
    +'; end 
    + _buf << '</div>
    +';
    +_buf.to_s
    +
    +

    StringBufferEnhancer is only for Eruby. +

    +
    + + + +

    ErboutEnhancer

    +

    ErboutEnhancer makes Eruby to be compatible with ERB. +This is useful especially for Ruby on Rails. +

    +
    +compiled source code
    +
    $ erubis -xE Erbout example.eruby
    +_erbout = _buf = ''; _buf << '<div>
    +'; for item in list 
    + _buf << '  <p>'; _buf << ( item ).to_s; _buf << '</p>
    +  <p>'; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '</p>
    +'; end 
    + _buf << '</div>
    +';
    +_buf.to_s
    +
    +

    ErboutEnhancer is only for Eruby. +

    +
    + + + +

    NoTextEnhancer

    +

    NoTextEnhancer suppress output of text and prints only embedded code. +This is useful especially when debugging a complex eRuby script. +

    + +
    +notext-example.eruby
    +
    <h3>List</h3>
    +<% if !@list || @list.empty? %>
    +<p>not found.</p>
    +<% else %>
    +<table>
    +  <tbody>
    +    <% @list.each_with_index do |item, i| %>
    +    <tr bgcolor="<%= i%2 == 0 ? '#FFCCCC' : '#CCCCFF' %>">
    +      <td><%= item %></td>
    +    </tr>
    +    <% end %>
    +  </tbody>
    +</table>
    +<% end %>
    +
    + +
    +output example of NoTextEnhancer
    +
    $ erubis -xE NoText notext-example.eruby
    +_buf = '';
    + if !@list || @list.empty? 
    +
    + else 
    +
    +
    +     @list.each_with_index do |item, i| 
    +                  _buf << ( i%2 == 0 ? '#FFCCCC' : '#CCCCFF' ).to_s;
    +           _buf << ( item ).to_s;
    +
    +     end 
    +
    +
    + end 
    +_buf.to_s
    +
    +

    NoTextEnhancer is language-independent. It is useful even if you are PHP user, see this section. +

    +
    + + + +

    NoCodeEnhancer

    +

    NoCodeEnhancer suppress output of embedded code and prints only normal text. +This is useful especially when validating HTML tags. +

    + +
    +nocode-example.eruby
    +
    <h3>List</h3>
    +<% if !@list || @list.empty? %>
    +<p>not found.</p>
    +<% else %>
    +<table>
    +  <tbody>
    +    <% @list.each_with_index do |item, i| %>
    +    <tr bgcolor="<%= i%2 == 0 ? '#FFCCCC' : '#CCCCFF' %>">
    +      <td><%= item %></td>
    +    </tr>
    +    <% end %>
    +  </tbody>
    +</table>
    +<% end %>
    +
    + +
    +output example of NoCodeEnhancer
    +
    $ erubis -xE NoCode notext-example.eruby
    +<h3>List</h3>
    +
    +<p>not found.</p>
    +
    +<table>
    +  <tbody>
    +
    +    <tr bgcolor="">
    +      <td></td>
    +    </tr>
    +
    +  </tbody>
    +</table>
    +
    +
    +

    NoCodeEnhancer is language-independent. It is useful even if you are PHP user, see this section. +

    +
    + + + +

    SimplifyEnhancer

    +

    SimplifyEnhancer makes compiling a little faster but don't trim spaces around '<% %>'. +

    + +
    +compiled source code
    +
    $ erubis -xE Simplify example.eruby
    +_buf = ''; _buf << '<div>
    +'; for item in list ; _buf << '
    +  <p>'; _buf << ( item ).to_s; _buf << '</p>
    +  <p>'; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '</p>
    +'; end ; _buf << '
    +</div>
    +';
    +_buf.to_s
    +
    +

    SimplifyEnhancer is language-independent. +

    +
    + + + +

    BiPatternEnhancer

    +

    BiPatternEnhancer enables to use another embedded pattern with '<% %>'. +By Default, '[= ... =]' is available for expression. +You can specify pattern by :bipattern property. +

    + +
    +bipattern-example.rhtml
    +
    <% for item in list %>
    +  <b>[= item =]</b>
    +  <b>[== item =]</b>
    +<% end %>
    +
    + +
    +compiled source code
    +
    $ erubis -xE BiPattern bipattern-example.rhtml
    +_buf = ''; for item in list 
    + _buf << '  <b>'; _buf << ( item ).to_s; _buf << '</b>
    +  <b>'; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '</b>
    +'; end 
    +_buf.to_s
    +
    +

    BiPatternEnhancer is language-independent. +

    +
    + + + +

    PercentLineEnhancer

    +

    PercentLineEnhancer regards lines starting with '%' as Ruby code. +This is for compatibility with eruby and ERB. +

    + +
    +percentline-example.rhtml
    +
    <ul>
    +% for item in list
    +  <li><%= item %></li>
    +% end
    +</ul>
    +%% lines with '%%'
    +
    + +
    +compiled source code
    +
    $ erubis -xE PercentLine percentline-example.rhtml
    +_buf = ''; _buf << '<ul>
    +'; for item in list
    + _buf << '  <li>'; _buf << ( item ).to_s; _buf << '</li>
    +'; end
    + _buf << '</ul>
    +% lines with \'%%\'
    +';
    +_buf.to_s
    +
    +

    PercentLineEnhancer is language-independent. +

    +
    + + + +

    PrefixedLineEnhancer

    +

    PrefixedlineEnhancer regards lines starting with '%' as Ruby code. +It is similar to PercentLineEnhancer, but there are some differences. +

    +
      +
    • PrefixedlineEnhancer allows to indent lines starting with '%', but PercentLineEnhancer doesn't. +
    • +
    • PrefixedlineEnhancer allows to change prefixed character (default '%'), but PercentLineEnhancer doesn't. +
    • +
    + +
    +prefixedline-example.rhtml
    +
    <ul>
    +  ! for item in list
    +  <li><%= item %></li>
    +  ! end
    +</ul>
    +  !! lines with '!!'
    +
    + +
    +prefixedline-example.rb
    +
    require 'erubis'
    +
    +class PrefixedLineEruby < Erubis::Eruby
    +  include Erubis::PrefixedLineEnhancer
    +end
    +
    +input = File.read('prefixedline-example.rhtml')
    +eruby = PrefixedLineEruby.new(input, :prefixchar=>'!')  # default '%'
    +print eruby.src
    +
    + +
    +compiled source code
    +
    $ ruby prefixedline-example.rb
    +_buf = ''; _buf << '<ul>
    +';   for item in list
    + _buf << '  <li>'; _buf << ( item ).to_s; _buf << '</li>
    +';   end
    + _buf << '</ul>
    +  ! lines with \'!!\'
    +';
    +_buf.to_s
    +
    +

    PrefixedLineEnhancer is language-independent. +

    +
    + + + +

    HeaderFooterEnhancer

    +

    [experimental] +

    +

    HeaderFooterEnhancer enables you to add header and footer in eRuby script. +

    + +
    +headerfooter-example.eruby
    +
    <!--#header:
    +def list_items(items)
    +#-->
    +<% for item in items %>
    +  <b><%= item %></b>
    +<% end %>
    +<!--#footer:
    +end
    +#-->
    +
    + +
    +compiled source code
    +
    $ erubis -xE HeaderFooter headerfooter-example.eruby
    +
    +def list_items(items)
    +
    +_buf = ''; for item in items 
    + _buf << '  <b>'; _buf << ( item ).to_s; _buf << '</b>
    +'; end 
    +_buf.to_s
    +
    +end
    +
    +
    +

    Compare to the following: +

    + +
    +normal-eruby-test.eruby
    +
    <%
    +def list_items(items)
    +%>
    +<% for item in items %>
    +<li><%= item %></li>
    +<% end %>
    +<%
    +end
    +%>
    +
    + +
    +compiled source code
    +
    $ erubis -x normal-eruby-test.eruby
    +_buf = '';
    +def list_items(items)
    +
    + for item in items 
    + _buf << '<li>'; _buf << ( item ).to_s; _buf << '</li>
    +'; end 
    +
    +end
    +
    +_buf.to_s
    +
    +

    Header and footer can be in any position in eRuby script, +that is, header is no need to be in the head of eRuby script. +

    + +
    +headerfooter-example2.rhtml
    +
    <?xml version="1.0"?>
    +<html>
    +<!--#header:
    +def page(list)
    +#-->
    + :
    +<!--#footer:
    +end
    +#-->
    +</html>
    +
    + +
    +compiled source code
    +
    $ erubis -xE HeaderFooter headerfooter-example2.rhtml
    +
    +def page(list)
    +
    +_buf = ''; _buf << '<?xml version="1.0"?>
    +<html>
    +'; _buf << ' :
    +'; _buf << '</html>
    +';
    +_buf.to_s
    +
    +end
    +
    +
    +

    HeaderFooterEnhancer is experimental and is language-independent. +

    +
    + + + +

    InterpolationEnhancer

    +

    [experimental] +

    +

    InterpolationEnhancer converts "<h1><%= title %></h1>" into +"_buf << %Q`<h1>#{ title }</h1>`". +This makes Eruby a litter faster because method call of String#<< are eliminated +by expression interpolations. +

    +
    +InterpolationEnhancer elmininates method call of String#<<.
    +
    ## Assume that input is '<a href="<%=url%>"><%=name%></a>'.
    +## Eruby convert input into the following code.  String#<< is called 5 times.
    +_buf << '<a href="'; _buf << (url).to_s; _buf << '">'; _buf << (name).to_s; _buf << '</a>';
    +
    +## If InterpolationEnhancer is used, String#<< is called only once.
    +_buf << %Q`<a href="#{url}">#{name}</a>`;
    +
    + +
    +compiled source code
    +
    $ erubis -xE Interpolation example.eruby
    +_buf = ''; _buf << %Q`<div>\n`
    + for item in list 
    + _buf << %Q`  <p>#{ item }</p>
    +  <p>#{Erubis::XmlHelper.escape_xml( item )}</p>\n`
    + end 
    + _buf << %Q`</div>\n`
    +_buf.to_s
    +
    +

    Erubis provides Erubis::FastEruby class which includes InterpolationEnhancer. +You can use Erubis::FastEruby class instead of Erubis::Eruby class. +

    +

    InterpolationEnhancer is only for Eruby. +

    +
    + + + +

    DeleteIndentEnhancer

    +

    [experimental] +DeleteIndentEnhancer deletes indentation of HTML file. +

    + +
    +compiled source code
    +
    $ erubis -xE DeleteIndent example.eruby
    +_buf = ''; _buf << '<div>
    +'; for item in list 
    + _buf << '<p>'; _buf << ( item ).to_s; _buf << '</p>
    +<p>'; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '</p>
    +'; end 
    + _buf << '</div>
    +';
    +_buf.to_s
    +
    +

    Notice that DeleteIndentEnhancer isn't intelligent. +It deletes indentations even if they are in <PRE></PRE>. +

    +

    DeleteIndentEnhancer is language-independent. +

    +
    + + +
    + + + +

    Multi-Language Support

    +

    Erubis supports the following languages(*2): +

    + +
    +
    +
    (*2)
    +
    If you need template engine in pure PHP/Perl/JavaScript, try Tenjin (http://www.kuwata-lab.com/tenjin/). Tenjin is a very fast and full-featured template engine implemented in pure PHP/Perl/JavaScript.
    +
    +
    + +

    PHP

    + +
    +example.ephp
    +
    <?xml version="1.0"?>
    +<html>
    + <body>
    +  <p>Hello <%= $user %>!</p>
    +  <table>
    +   <tbody>
    +    <% $i = 0; %>
    +    <% foreach ($list as $item) { %>
    +    <%   $i++; %>
    +    <tr bgcolor="<%= $i % 2 == 0 ? '#FFCCCC' : '#CCCCFF' %>">
    +     <td><%= $i %></td>
    +     <td><%== $item %></td>
    +    </tr>
    +    <% } %>
    +   </tbody>
    +  </table>
    + </body>
    +</html>
    +
    + +
    +compiled source code
    +
    $ erubis -l php example.ephp
    +<<?php ?>?xml version="1.0"?>
    +<html>
    + <body>
    +  <p>Hello <?php echo $user; ?>!</p>
    +  <table>
    +   <tbody>
    +<?php     $i = 0; ?>
    +<?php     foreach ($list as $item) { ?>
    +<?php       $i++; ?>
    +    <tr bgcolor="<?php echo $i % 2 == 0 ? '#FFCCCC' : '#CCCCFF'; ?>">
    +     <td><?php echo $i; ?></td>
    +     <td><?php echo htmlspecialchars($item); ?></td>
    +    </tr>
    +<?php     } ?>
    +   </tbody>
    +  </table>
    + </body>
    +</html>
    +
    +
    + + + +

    C

    + +
    +example.ec
    +
    <%
    +#include <stdio.h>
    +
    +int main(int argc, char *argv[])
    +{
    +    int i;
    +
    +%>
    +<html>
    + <body>
    +  <p>Hello <%= "%s", argv[0] %>!</p>
    +  <table>
    +   <tbody>
    +    <% for (i = 1; i < argc; i++) { %>
    +    <tr bgcolor="<%= i % 2 == 0 ? "#FFCCCC" : "#CCCCFF" %>">
    +      <td><%= "%d", i %></td>
    +      <td><%= "%s", argv[i] %></td>
    +    </tr>
    +    <% } %>
    +   </tbody>
    +  </table>
    + </body>
    +</html>
    +<%
    +    return 0; 
    +}
    +%>
    +
    + +
    +compiled source code
    +
    $ erubis -l c example.ec
    +#line 1 "example.ec"
    +
    +#include <stdio.h>
    +
    +int main(int argc, char *argv[])
    +{
    +    int i;
    +
    +
    +fputs("<html>\n"
    +      " <body>\n"
    +      "  <p>Hello ", stdout); fprintf(stdout, "%s", argv[0]); fputs("!</p>\n"
    +      "  <table>\n"
    +      "   <tbody>\n", stdout);
    +     for (i = 1; i < argc; i++) { 
    +fputs("    <tr bgcolor=\"", stdout); fprintf(stdout, i % 2 == 0 ? "#FFCCCC" : "#CCCCFF"); fputs("\">\n"
    +      "      <td>", stdout); fprintf(stdout, "%d", i); fputs("</td>\n"
    +      "      <td>", stdout); fprintf(stdout, "%s", argv[i]); fputs("</td>\n"
    +      "    </tr>\n", stdout);
    +     } 
    +fputs("   </tbody>\n"
    +      "  </table>\n"
    +      " </body>\n"
    +      "</html>\n", stdout);
    +
    +    return 0; 
    +}
    +
    +
    +
    + + + +

    C++

    + +
    +example.ecpp
    +
    <%
    +#include <string>
    +#include <iostream>
    +#include <sstream>
    +
    +int main(int argc, char *argv[])
    +{
    +    std::stringstream _buf;
    +%>
    +<html>
    + <body>
    +  <p>Hello <%= argv[0] %>!</p>
    +  <table>
    +   <tbody>
    +    <% for (int i = 1; i < argc; i++) { %>
    +    <tr bgcolor="<%= i % 2 == 0 ? "#FFCCCC" : "#CCCCFF" %>">
    +      <td><%= i %></td>
    +      <td><%= argv[i] %></td>
    +    </tr>
    +    <% } %>
    +   </tbody>
    +  </table>
    + </body>
    +</html>
    +<%
    +    std::string output = _buf.str();
    +    std::cout << output;
    +    return 0; 
    +}
    +%>
    +
    + +
    +compiled source code
    +
    $ erubis -l cpp example.ecpp
    +#line 1 "example.ecpp"
    +
    +#include <string>
    +#include <iostream>
    +#include <sstream>
    +
    +int main(int argc, char *argv[])
    +{
    +    std::stringstream _buf;
    +
    +_buf << "<html>\n"
    +        " <body>\n"
    +        "  <p>Hello "; _buf << (argv[0]); _buf << "!</p>\n"
    +        "  <table>\n"
    +        "   <tbody>\n";
    +     for (int i = 1; i < argc; i++) { 
    +_buf << "    <tr bgcolor=\""; _buf << (i % 2 == 0 ? "#FFCCCC" : "#CCCCFF"); _buf << "\">\n"
    +        "      <td>"; _buf << (i); _buf << "</td>\n"
    +        "      <td>"; _buf << (argv[i]); _buf << "</td>\n"
    +        "    </tr>\n";
    +     } 
    +_buf << "   </tbody>\n"
    +        "  </table>\n"
    +        " </body>\n"
    +        "</html>\n";
    +
    +    std::string output = _buf.str();
    +    std::cout << output;
    +    return 0; 
    +}
    +
    +
    +
    + + + +

    Java

    + +
    +Example.ejava
    +
    <%
    +import java.util.*;
    +
    +public class Example {
    +  private String user;
    +  private String[] list;
    +  public example(String user, String[] list) {
    +    this.user = user;
    +    this.list = list;
    +  }
    +
    +  public String view() {
    +    StringBuffer _buf = new StringBuffer();
    +%>
    +<html>
    + <body>
    +  <p>Hello <%= user %>!</p>
    +  <table>
    +   <tbody>
    +    <% for (int i = 0; i < list.length; i++) { %>
    +    <tr bgcolor="<%= i % 2 == 0 ? "#FFCCCC" : "#CCCCFF" %>">
    +     <td><%= i + 1 %></td>
    +     <td><%== list[i] %></td>
    +    </tr>
    +    <% } %>
    +   </tbody>
    +  </table>
    + <body>
    +</html>
    +<%
    +    return _buf.toString();
    +  }
    +
    +  public static void main(String[] args) {
    +    String[] list = { "<aaa>", "b&b", "\"ccc\"" };
    +    Example ex = Example.new("Erubis", list);
    +    System.out.print(ex.view());
    +  }
    +
    +  public static String escape(String s) {
    +    StringBuffer sb = new StringBuffer();
    +    for (int i = 0; i < s.length(); i++) {
    +      char ch = s.charAt(i);
    +      switch (ch) {
    +      case '<':   sb.append("&lt;"); break;
    +      case '>':   sb.append("&gt;"); break;
    +      case '&':   sb.append("&amp;"); break;
    +      case '"':   sb.append("&quot;"); break;
    +      default:    sb.append(ch);
    +      }
    +    }
    +    return sb.toString();
    +  }
    +}
    +%>
    +
    + +
    +compiled source code
    +
    $ erubis -b -l java example.ejava
    +
    +import java.util.*;
    +
    +public class Example {
    +  private String user;
    +  private String[] list;
    +  public example(String user, String[] list) {
    +    this.user = user;
    +    this.list = list;
    +  }
    +
    +  public String view() {
    +    StringBuffer _buf = new StringBuffer();
    +
    +_buf.append("<html>\n"
    +          + " <body>\n"
    +          + "  <p>Hello "); _buf.append(user); _buf.append("!</p>\n"
    +          + "  <table>\n"
    +          + "   <tbody>\n");
    +     for (int i = 0; i < list.length; i++) { 
    +_buf.append("    <tr bgcolor=\""); _buf.append(i % 2 == 0 ? "#FFCCCC" : "#CCCCFF"); _buf.append("\">\n"
    +          + "     <td>"); _buf.append(i + 1); _buf.append("</td>\n"
    +          + "     <td>"); _buf.append(escape(list[i])); _buf.append("</td>\n"
    +          + "    </tr>\n");
    +     } 
    +_buf.append("   </tbody>\n"
    +          + "  </table>\n"
    +          + " <body>\n"
    +          + "</html>\n");
    +
    +    return _buf.toString();
    +  }
    +
    +  public static void main(String[] args) {
    +    String[] list = { "<aaa>", "b&b", "\"ccc\"" };
    +    Example ex = Example.new("Erubis", list);
    +    System.out.print(ex.view());
    +  }
    +
    +  public static String escape(String s) {
    +    StringBuffer sb = new StringBuffer();
    +    for (int i = 0; i < s.length(); i++) {
    +      char ch = s.charAt(i);
    +      switch (ch) {
    +      case '<':   sb.append("&lt;"); break;
    +      case '>':   sb.append("&gt;"); break;
    +      case '&':   sb.append("&amp;"); break;
    +      case '"':   sb.append("&quot;"); break;
    +      default:    sb.append(ch);
    +      }
    +    }
    +    return sb.toString();
    +  }
    +}
    +
    +
    +
    + + + +

    Scheme

    + +
    +example.escheme
    +
    <html>
    + <body>
    +<%
    +(let ((user "Erubis")
    +      (items '("<aaa>" "b&b" "\"ccc\""))
    +      (i 0))
    + %>
    +  <p>Hello <%= user %>!</p>
    +  <table>
    +<%
    +  (for-each
    +   (lambda (item)
    +     (set! i (+ i 1))
    + %>
    +   <tr bgcolor="<%= (if (= (modulo i 2) 0) "#FFCCCC" "#CCCCFF") %>">
    +    <td><%= i %></td>
    +    <td><%= item %></td>
    +   </tr>
    +<%
    +   ) ; lambda end
    +   items) ; for-each end
    + %>
    +  </table>
    +<%
    +) ; let end
    +%>
    + </body>
    +</html>
    +
    + +
    +compiled source code
    +
    $ erubis -l scheme example.escheme
    +(let ((_buf '())) (define (_add x) (set! _buf (cons x _buf))) (_add "<html>
    + <body>\n")
    +
    +(let ((user "Erubis")
    +      (items '("<aaa>" "b&b" "\"ccc\""))
    +      (i 0))
    + 
    +(_add "  <p>Hello ")(_add user)(_add "!</p>
    +  <table>\n")
    +
    +  (for-each
    +   (lambda (item)
    +     (set! i (+ i 1))
    + 
    +(_add "   <tr bgcolor=\"")(_add (if (= (modulo i 2) 0) "#FFCCCC" "#CCCCFF"))(_add "\">
    +    <td>")(_add i)(_add "</td>
    +    <td>")(_add item)(_add "</td>
    +   </tr>\n")
    +
    +   ) ; lambda end
    +   items) ; for-each end
    + 
    +(_add "  </table>\n")
    +
    +) ; let end
    +
    +(_add " </body>
    +</html>\n")
    +  (reverse _buf))
    +
    + +
    +compiled source code (with --func=display property)
    +
    $ erubis -l scheme --func=display example.escheme
    +(display "<html>
    + <body>\n")
    +
    +(let ((user "Erubis")
    +      (items '("<aaa>" "b&b" "\"ccc\""))
    +      (i 0))
    + 
    +(display "  <p>Hello ")(display user)(display "!</p>
    +  <table>\n")
    +
    +  (for-each
    +   (lambda (item)
    +     (set! i (+ i 1))
    + 
    +(display "   <tr bgcolor=\"")(display (if (= (modulo i 2) 0) "#FFCCCC" "#CCCCFF"))(display "\">
    +    <td>")(display i)(display "</td>
    +    <td>")(display item)(display "</td>
    +   </tr>\n")
    +
    +   ) ; lambda end
    +   items) ; for-each end
    + 
    +(display "  </table>\n")
    +
    +) ; let end
    +
    +(display " </body>
    +</html>\n")
    +
    +
    + + + +

    Perl

    + +
    +example.eperl
    +
    <%
    +   my $user = 'Erubis';
    +   my @list = ('<aaa>', 'b&b', '"ccc"');
    +%>
    +<html>
    + <body>
    +  <p>Hello <%= $user %>!</p>
    +  <table>
    +   <% $i = 0; %>
    +   <% for $item (@list) { %>
    +   <tr bgcolor=<%= ++$i % 2 == 0 ? '#FFCCCC' : '#CCCCFF' %>">
    +    <td><%= $i %></td>
    +    <td><%= $item %></td>
    +   </tr>
    +   <% } %>
    +  </table>
    + </body>
    +</html>
    +
    + +
    +compiled source code
    +
    $ erubis -l perl example.eperl
    +use HTML::Entities; 
    +   my $user = 'Erubis';
    +   my @list = ('<aaa>', 'b&b', '"ccc"');
    +
    +print('<html>
    + <body>
    +  <p>Hello '); print($user); print('!</p>
    +  <table>
    +');     $i = 0; 
    +    for $item (@list) { 
    +print('   <tr bgcolor='); print(++$i % 2 == 0 ? '#FFCCCC' : '#CCCCFF'); print('">
    +    <td>'); print($i); print('</td>
    +    <td>'); print($item); print('</td>
    +   </tr>
    +');     } 
    +print('  </table>
    + </body>
    +</html>
    +'); 
    +
    +
    + + + +

    JavaScript

    + +
    +example.ejs
    +
    <%
    +   var user = 'Erubis';
    +   var list = ['<aaa>', 'b&b', '"ccc"'];
    + %>
    +<html>
    + <body>
    +  <p>Hello <%= user %>!</p>
    +  <table>
    +   <tbody>
    +    <% var i; %>
    +    <% for (i = 0; i < list.length; i++) { %>
    +    <tr bgcolor="<%= i % 2 == 0 ? '#FFCCCC' : '#CCCCFF' %>">
    +     <td><%= i + 1 %></td>
    +     <td><%= list[i] %></td>
    +    </tr>
    +    <% } %>
    +   </tbody>
    +  </table>
    + </body>
    +</html>
    +
    + +
    +compiled source code
    +
    $ erubis -l js example.ejs
    +var _buf = [];
    +   var user = 'Erubis';
    +   var list = ['<aaa>', 'b&b', '"ccc"'];
    + 
    +_buf.push("<html>\n\
    + <body>\n\
    +  <p>Hello "); _buf.push(user); _buf.push("!</p>\n\
    +  <table>\n\
    +   <tbody>\n");
    +     var i; 
    +     for (i = 0; i < list.length; i++) { 
    +_buf.push("    <tr bgcolor=\""); _buf.push(i % 2 == 0 ? '#FFCCCC' : '#CCCCFF'); _buf.push("\">\n\
    +     <td>"); _buf.push(i + 1); _buf.push("</td>\n\
    +     <td>"); _buf.push(list[i]); _buf.push("</td>\n\
    +    </tr>\n");
    +     } 
    +_buf.push("   </tbody>\n\
    +  </table>\n\
    + </body>\n\
    +</html>\n");
    +document.write(_buf.join(""));
    +
    +

    If command-line option '--docwrite=false' is specified, +'_buf.join("");' is used instead of 'document.write(_buf.join(""));'. +This is useful when passing converted source code to eval() function in JavaScript. +

    +

    You can pass :docwrite=>false to Erubis::Ejavascript.new() in your Ruby script. +

    +
    s = File.read('example.jshtml')
    +engine = Erubis::Ejavascript.new(s, :docwrite=>false)
    +
    +

    If you want to specify any JavaScript code, use '--postamble=...'. +

    +

    Notice that default value of 'docwrite' property will be false in the future release. +

    +
    + + +
    + + + +

    Ruby on Rails Support

    +

    NOTICE: Rails 3 adopts Erubis as default default engine. You don't need to do anything at all when using Rails 3. This section is for Rails 2. +

    +

    Erubis supports Ruby on Rails. +This section describes how to use Erubis with Ruby on Rails. +

    + +

    Settings

    +

    Add the following code to your 'config/environment.rb' and restart web server. +This replaces ERB in Rails by Erubis entirely. +

    +
    +config/environment.rb
    +
    require 'erubis/helpers/rails_helper'
    +#Erubis::Helpers::RailsHelper.engine_class = Erubis::Eruby # or Erubis::FastEruby
    +#Erubis::Helpers::RailsHelper.init_properties = {}
    +#Erubis::Helpers::RailsHelper.show_src = nil
    +#Erubis::Helpers::RailsHelper.preprocessing = false
    +
    +

    Options: +

    +
    +
    +Erubis::Helpers::RailsHelper.engine_class (=Erubis::Eruby)
    +
    +

    Erubis engine class (default Erubis::Eruby). +

    +
    +
    +Erubis::Helpers::RailsHelper.init_properties (={})
    +
    +

    Optional arguments for Erubis::Eruby#initialize() method (default {}). +

    +
    +
    +Erubis::Helpers::RailsHelper.show_src (=nil)
    +
    +

    Whether to print converted Ruby code into log file. + If true, Erubis prints coverted code into log file. + If false, Erubis doesn't. + If nil, Erubis prints when ENV['RAILS_ENV'] == 'development'. + Default is nil. +

    +
    +
    +Erubis::Helpers::RailsHelper.preprocessing (=false)
    +
    +

    Enable preprocessing if true (default false). +

    +
    +
    +
    + + + +

    Preprosessing

    +

    Erubis supports preprocessing of template files. +Preprocessing make your Ruby on Rails application about 20-40 percent faster. +To enable preprocessing, set Erubis::Helpers::RailsHelper.preprocessing to true in your 'environment.rb' file. +

    +

    For example, assume the following template. +This is slow because link_to() method is called every time when template is rendered. +

    +
    <%= link_to 'Create', :action=>'create' %>
    +
    +

    The following is faster than the above, but not flexible because url is fixed. +

    +
    <a href="/users/create">Create</a>
    +
    +

    Preprocessing solves this problem. +If you use '[%= %]' instead of '<%= %>', preprocessor evaluate it only once when template is loaded. +

    +
    [%= link_to 'Create', :action=>'create'%]
    +
    +

    The above is evaluated by preprocessor and replaced to the following code automatically. +

    +
    <a href="/users/create">Create</a>
    +
    +

    Notice that this is done only once when template file is loaded. +It means that link_to() method is not called when template is rendered. +

    +

    If link_to() method have variable arguments, use _?() helper method. +

    +
    <% for user in @users %>
    +[%= link_to _?('user.name'), :action=>'show', :id=>_?('user.id') %]
    +<% end %>
    +
    +

    The above is evaluated by preprocessor when template is loaded and expanded into the following code. +This will be much faster because link_to() method is not called when rendering. +

    +
    <% for user in @users %>
    +<a href="/users/show/<%=user.id%>"><%=user.name%></a>
    +<% end %>
    +
    +

    Preprocessing statement ([% %]) is also available as well as preprocessing expression ([%= %]). +

    +
    <select name="state">
    +  <option value="">-</option>
    +[% for code in states.keys.sort %]
    +  <option value="[%= code %]">[%= states[code] %]</option>
    +[% end %]
    +</select>
    +
    +

    The above will be evaluated by preprocessor and expanded into the following when template is loaded. +In the result, rendering speed will be much faster because for-loop is not executed when rendering. +

    +
    <select name="state">
    +  <option value="">-</option>
    +  <option value="AK">Alaska</option>
    +  <option value="AL">Alabama</option>
    +  <option value="AR">Arkansas</option>
    +  <option value="AS">American Samoa</option>
    +  <option value="AZ">Arizona</option>
    +  <option value="CA">California</option>
    +  <option value="CO">Colorado</option>
    +   ....
    +</select>
    +
    +

    Notice that it is not recommended to use preprocessing with tag helpers, +because tag helpers generate different html code when form parameter has errors or not. +

    +

    Helper methods of Ruby on Rails are divided into two groups. +

    +
      +
    • link_to() or _() (method of gettext package) are not need to call for every time + as template is rendered because it returns same value when same arguments are passed. + These methods can be got faster by preprocessing. +
    • +
    • Tag helper methods should be called for every time as template is rendered + because it may return differrent value even if the same arguments are passed. + Preprocessing is not available with these methods. +
    • +
    +

    In Ruby on Rails 2.0, _?('user_id') is OK but _?('user.id') is NG +because the latter contains period ('.') character. +

    +
    <!-- NG in Rails 2.0, because _?('') contains period -->
    +[%= link_to 'Edit', edit_user_path(_?('@user.id')) %]
    +[%= link_to 'Show', @user %]
    +[%= link_to 'Delete', @user, :confirm=>'OK?', :method=>:delete %]
    +
    +<!-- OK in Rails 2.0 -->
    +<%= user_id = @user.id %>
    +[%= link_to 'Edit', edit_user_path(_?('user_id')) %]
    +[%= link_to 'Show', :action=>'show', :id=>_?('user_id') %]
    +[%= link_to 'Delete', {:action=>'destroy', :id=>_?('user_id')},
    +                      {:confirm=>'OK?', :method=>:delete} %]
    +
    +
    + + + +

    Form Helpers for Preprocessing

    +

    (Experimental) +

    +

    Erubis provides form helper methods for preprocessing. +These are defined in 'erubis/helpers/rails_form_helper.rb'. +If you want to use it, require it and include Erubis::Helpers::RailsFormHelper in 'app/helpers/applition_helper.rb' +

    +
    +app/helpers/xxx_helper.rb
    +
    require 'erubis/helpers/rails_form_helper'
    +module ApplicationHelper
    +  include Erubis::Helpers::RailsFormHelper
    +end
    +
    +

    Form helper methods defined in Erubis::Helpers::RailsFormHelper are named as 'pp_xxxx' +('pp' represents preprocessing). +

    +

    Assume the following view template: +

    +
    +_form.rhtml
    +
     <p>
    +  Name: <%= text_field :user, :name %>
    + </p>
    + <p>
    +  Name: [%= pp_text_field :user, :name %]
    + </p>
    +
    +

    Erubis preprocessor converts it to the following eRuby string: +

    +
    +preprocessed
    +
     <p>
    +  Name: <%= text_field :user, :name %>
    + </p>
    + <p>
    +  Name: <input id="stock_name" name="stock[name]" size="30" type="text" value="<%=h @stock.name%>" />
    + </p>
    +
    +

    Erubis converts it to the following Ruby code: +

    +
    +Ruby code
    +
     _buf << ' <p>
    +  Name: '; _buf << ( text_field :stock, :name ).to_s; _buf << '
    +'; _buf << ' </p>
    + <p>
    +  Name: <input id="stock_name" name="stock[name]" size="30" type="text" value="'; _buf << (h @stock.name).to_s; _buf << '" />
    + </p>
    +';
    +
    +

    The above Ruby code shows that text_field() is called everytime when rendering, +but pp_text_field() is called only once when template is loaded. +This means that pp_text_field() with preprocessing makes view layer very fast. +

    +

    Module Erubis::Helpers::RailsFormHelper defines the following form helper methods. +

    +
      +
    • pp_render_partial(basename) +
    • +
    • pp_form_tag(url_for_options={}, options={}, *parameters_for_url, &block) +
    • +
    • pp_text_field(object_name, method, options={}) +
    • +
    • pp_password_field(object_name, method, options={}) +
    • +
    • pp_hidden_field(object_name, method, options={}) +
    • +
    • pp_file_field(object_name, method, options={}) +
    • +
    • pp_text_area(object_name, method, options={}) +
    • +
    • pp_check_box(object_name, method, options={}, checked_value="1", unchecked_value="0") +
    • +
    • pp_radio_button(object_name, method, tag_value, options={}) +
    • +
    • pp_select(object, method, collection, options={}, html_options={}) +
    • +
    • pp_collection_select(object, method, collection, value_method, text_method, options={}, html_options={}) +
    • +
    • pp_country_select(object, method, priority_countries=nil, options={}, html_options={}) +
    • +
    • pp_time_zone_select(object, method, priority_zones=nil, options={}, html_options={}) +
    • +
    • pp_submit_tag(value="Save changes", options={}) +
    • +
    • pp_image_submit_tag(source, options={}) +
    • +
    +

    Notice that pp_form_for() is not provided. +

    +

    CAUTION: These are experimental and may not work in Ruby on Rails 2.0. +

    +
    + + + +

    Others

    +
      +
    • ActionView::Helpers::CaptureHelper#capture() and ActionView::Helpers::Texthelper#concat() are available. +
    • +
    +
      +
    • Form helper methods are not tested in Ruby on Rails 2.0. +
    • +
    +
      +
    • ERB::Util.h() is redefined if you require 'erubis/helpers/rails_helper.rb'. + Original definition of ERB::Util.h() is the following and it is slow + because it scans string four times. +
       def html_escape(s)
      +   s.to_s.gsub(/&/, "&amp;").gsub(/\"/, "&quot;").gsub(/>/, "&gt;").gsub(/</, "&lt;")
      + end
      + alias h html_escape
      +
      +

      New definition in 'erubis/helpers/rails_helper.rb' is faster than the above + because it scans string only once. +

      +
       ESCAPE_TABLE = { '&'=>'&amp;', '<'=>'&lt;', '>'=>'&gt;', '"'=>'&quot;', "'"=>'&#039;', }
      + def h(value)
      +   value.to_s.gsub(/[&<>"]/) { |s| ESCAPE_TABLE[s] }
      + end
      +
      +

      Notice that the new definition may be slow if string contains + many '< > & "' characters because block is call many time. + You should use ERB::Util.html_hscape() if string contains a lot of '< > & "' + characters. +

      +
    • +
    +
    + + +
    + + + +

    Other Topics

    + +

    Erubis::FastEruby Class

    +

    Erubis::FastEruby class generates more effective code than Erubis::Eruby. +

    + +
    +fasteruby-example.rb
    +
    require 'erubis'
    +input = File.read('example.eruby')
    +
    +puts "----- Erubis::Eruby -----"
    +print Erubis::Eruby.new(input).src
    +
    +puts "----- Erubis::FastEruby -----"
    +print Erubis::FastEruby.new(input).src
    +
    + +
    +result
    +
    $ ruby fasteruby-example.rb
    +----- Erubis::Eruby -----
    +_buf = ''; _buf << '<div>
    +'; for item in list 
    + _buf << '  <p>'; _buf << ( item ).to_s; _buf << '</p>
    +  <p>'; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '</p>
    +'; end 
    + _buf << '</div>
    +';
    +_buf.to_s
    +----- Erubis::FastEruby -----
    +_buf = ''; _buf << %Q`<div>\n`
    + for item in list 
    + _buf << %Q`  <p>#{ item }</p>
    +  <p>#{Erubis::XmlHelper.escape_xml( item )}</p>\n`
    + end 
    + _buf << %Q`</div>\n`
    +_buf.to_s
    +
    +

    Technically, Erubis::FastEruby is just a subclass of Erubis::Eruby and includes InterpolationEnhancer. Erubis::FastEruby is faster than Erubis::Eruby but is not extensible compared to Erubis::Eruby. This is the reason why Erubis::FastEruby is not the default class of Erubis. +

    +
    + + + +

    :bufvar Option

    +

    Since 2.7.0, Erubis supports :bufvar option which allows you to change buffer variable name (default '_buf'). +

    + +
    +bufvar-example.rb
    +
    require 'erubis'
    +input = File.read('example.eruby')
    +
    +puts "----- default -----"
    +eruby = Erubis::FastEruby.new(input)
    +puts eruby.src
    +
    +puts "----- with :bufvar option -----"
    +eruby = Erubis::FastEruby.new(input, :bufvar=>'@_out_buf')
    +print eruby.src
    +
    + +
    +result
    +
    $ ruby bufvar-example.rb
    +----- default -----
    +_buf = ''; _buf << %Q`<div>\n`
    + for item in list 
    + _buf << %Q`  <p>#{ item }</p>
    +  <p>#{Erubis::XmlHelper.escape_xml( item )}</p>\n`
    + end 
    + _buf << %Q`</div>\n`
    +_buf.to_s
    +----- with :bufvar option -----
    +@_out_buf = ''; @_out_buf << %Q`<div>\n`
    + for item in list 
    + @_out_buf << %Q`  <p>#{ item }</p>
    +  <p>#{Erubis::XmlHelper.escape_xml( item )}</p>\n`
    + end 
    + @_out_buf << %Q`</div>\n`
    +@_out_buf.to_s
    +
    +
    + + + +

    '<%= =%>' and '<%= -%>'

    +

    Since 2.6.0, '<%= -%>' remove tail spaces and newline. +This is for compatibiliy with ERB when trim mode is '-'. +'<%= =%>' also removes tail spaces and newlines, and this is +Erubis-original enhancement (cooler than '<%= -%>', isn't it?). +

    + +
    +tailnewline.rhtml
    +
    <div>
    +<%= @var -%>          # or <%= @var =%>
    +</div>
    +
    +
    +result (version 2.5.0):
    +
    $ erubis -c '{var: "AAA\n"}' tailnewline.rhtml
    +<div>
    +AAA
    +
    +</div>
    +
    + +
    +result (version 2.6.0):
    +
    $ erubis -c '{var: "AAA\n"}' tailnewline.rhtml
    +<div>
    +AAA
    +</div>
    +
    +
    + + + +

    '<%% %>' and '<%%= %>'

    +

    Since 2.6.0, '<%% %>' and '<%%= %>' are converted into '<% %>' and '<%= %>' respectively. +This is for compatibility with ERB. +

    +
    +doublepercent.rhtml:
    +
    <ul>
    +<%% for item in @list %>
    +  <li><%%= item %></li>
    +<%% end %>
    +</ul>
    +
    +
    +result:
    +
    $ erubis doublepercent.rhtml
    +<ul>
    +<% for item in @list %>
    +  <li><%= item %></li>
    +<% end %>
    +</ul>
    +
    +
    + + + +

    evaluate(context) v.s. result(binding)

    +

    It is recommended to use 'Erubis::Eruby#evaluate(context)' instead of 'Erubis::Eruby#result(binding)' because Ruby's Binding object has some problems. +

    +
      +
    • It is not able to specify variables to use. + Using binding() method, all of local variables are passed to templates. +
    • +
    • Changing local variables in templates may affect to varialbes in main program. + If you assign '10' to local variable 'x' in templates, it may change variable 'x' in main program unintendedly. +
    • +
    +

    The following example shows that assignment of some values into variable 'x' in templates affect to local variable 'x' in main program unintendedly. +

    + +
    +template1.rhtml (intended to be passed 'items' from main program)
    +
    <% for x in items %>
    +item = <%= x %>
    +<% end %>
    +** debug: local variables=<%= local_variables().inspect() %>
    +
    + +
    +main_program1.rb (intended to pass 'items' to template)
    +
    require 'erubis'
    +eruby = Erubis::Eruby.new(File.read('template1.rhtml'))
    +items = ['foo', 'bar', 'baz']
    +x = 1
    +## local variable 'x' and 'eruby' are passed to template as well as 'items'!
    +print eruby.result(binding())    
    +## local variable 'x' is changed unintendedly because it is changed in template!
    +puts "** debug: x=#{x.inspect}"  #=> "baz"
    +
    + +
    +Result:
    +
    $ ruby main_program1.rb
    +item = foo
    +item = bar
    +item = baz
    +** debug: local variables=["eruby", "items", "x", "_buf"]
    +** debug: x="baz"
    +
    +

    This problem is caused because Ruby's Binding class is poor to use in template engine. +Binding class should support the following features. +

    +
    b = Binding.new     # create empty Binding object
    +b['x'] = 1          # set local variables using binding object
    +
    +

    But the above features are not implemented in Ruby. +

    +

    A pragmatic solution is to use 'Erubis::Eruby#evaluate(context)' instead of 'Erubis::Eruby#result(binding)'. +'evaluate(context)' uses Erubis::Context object and instance variables instead of Binding object and local variables. +

    + +
    +template2.rhtml (intended to be passed '@items' from main program)
    +
    <% for x in @items %>
    +item = <%= x %>
    +<% end %>
    +** debug: local variables=<%= local_variables().inspect() %>
    +
    + +
    +main_program2.rb (intended to pass '@items' to template)
    +
    require 'erubis'
    +eruby = Erubis::Eruby.new(File.read('template2.rhtml'))
    +items = ['foo', 'bar', 'baz']
    +x = 1
    +## only 'items' are passed to template
    +print eruby.evaluate(:items=>items)    
    +## local variable 'x' is not changed!
    +puts "** debug: x=#{x.inspect}"  #=> 1
    +
    + +
    +Result:
    +
    $ ruby main_program2.rb
    +item = foo
    +item = bar
    +item = baz
    +** debug: local variables=["_context", "x", "_buf"]
    +** debug: x=1
    +
    +
    + + + +

    Class Erubis::FastEruby

    +

    [experimental] +

    +

    Erubis provides Erubis::FastEruby class which includes InterpolationEnhancer and works faster than Erubis::Eruby class. +If you desire more speed, try Erubis::FastEruby class. +

    + +
    +File 'fasteruby.rhtml':
    +
    <html>
    +  <body>
    +    <h1><%== @title %></h1>
    +    <table>
    +<% i = 0 %>
    +<% for item in @list %>
    +<%   i += 1 %>
    +      <tr>
    +        <td><%= i %></td>
    +        <td><%== item %></td>
    +      </tr>
    +<% end %>
    +    </table>
    +  </body>
    +</html>
    +
    + +
    +File 'fasteruby.rb':
    +
    require 'erubis'
    +input = File.read('fasteruby.rhtml')
    +eruby = Erubis::FastEruby.new(input)    # create Eruby object
    +
    +puts "---------- script source ---"
    +puts eruby.src
    +
    +puts "---------- result ----------"
    +context = { :title=>'Example', :list=>['aaa', 'bbb', 'ccc'] }
    +output = eruby.evaluate(context)
    +print output
    +
    + +
    +output
    +
    $ ruby fasteruby.rb
    +---------- script source ---
    +_buf = ''; _buf << %Q`<html>
    +  <body>
    +    <h1>#{Erubis::XmlHelper.escape_xml( @title )}</h1>
    +    <table>\n`
    + i = 0 
    + for item in @list 
    +   i += 1 
    + _buf << %Q`      <tr>
    +        <td>#{ i }</td>
    +        <td>#{Erubis::XmlHelper.escape_xml( item )}</td>
    +      </tr>\n`
    + end 
    + _buf << %Q`    </table>
    +  </body>
    +</html>\n`
    +_buf.to_s
    +---------- result ----------
    +<html>
    +  <body>
    +    <h1>Example</h1>
    +    <table>
    +      <tr>
    +        <td>1</td>
    +        <td>aaa</td>
    +      </tr>
    +      <tr>
    +        <td>2</td>
    +        <td>bbb</td>
    +      </tr>
    +      <tr>
    +        <td>3</td>
    +        <td>ccc</td>
    +      </tr>
    +    </table>
    +  </body>
    +</html>
    +
    +
    + + + +

    Syntax Checking

    +

    Command-line option '-z' checks syntax. It is similar to 'erubis -x file.rhtml | ruby -wc', but it can take several file names. +

    +
    +example of command-line option '-z'
    +
    $ erubis -z app/views/*/*.rhtml
    +Syntax OK
    +
    +
    + + + +

    File Caching

    +

    Erubis::Eruby.load_file(filename) convert file into Ruby script and return Eruby object. +In addition, it caches converted Ruby script into cache file (filename + '.cache') if cache file is old or not exist. +If cache file exists and is newer than eruby file, Erubis::Eruby.load_file() loads cache file. +

    +
    +example of Erubis::Eruby.load_file()
    +
    require 'erubis'
    +filename = 'example.rhtml'
    +eruby = Erubis::Eruby.load_file(filename)
    +cachename = filename + '.cache'
    +if test(?f, cachename)
    +  puts "*** cache file '#{cachename}' created."
    +end
    +
    +

    Since 2.6.0, it is able to specify cache filename. +

    +
    +specify cache filename.
    +
    filename = 'example.rhtml'
    +eruby = Erubis::Eruby.load_file(filename, :cachename=>filename+'.cache')
    +
    +

    Caching makes Erubis about 40-50 percent faster than no-caching. +See benchmark for details. +

    +
    + + + +

    Erubis::TinyEruby class

    +

    Erubis::TinyEruby class in 'erubis/tiny.rb' is the smallest implementation of eRuby. +If you don't need any enhancements of Erubis and only require simple eRuby implementation, +try Erubis::TinyEruby class. +

    +
    + + + +

    NoTextEnhancer and NoCodeEnhancer in PHP

    +

    NoTextEnhancer and NoCodEnahncer are quite useful not only for eRuby but also for PHP. +The former "drops" HTML text and show up embedded Ruby/PHP code +and the latter drops embedded Ruby/PHP code and leave HTML text. +

    +

    For example, see the following PHP script. +

    + +
    +notext-example.php
    +
    <html>
    +  <body>
    +    <h3>List</h3>
    +    <?php if (!$list || count($list) == 0) { ?>
    +    <p>not found.</p>
    +    <?php } else { ?>
    +    <table>
    +      <tbody>
    +        <?php $i = 0; ?>
    +        <?php foreach ($list as $item) { ?>
    +        <tr bgcolor="<?php echo ++$i % 2 == 1 ? '#FFCCCC' : '#CCCCFF'; ?>">
    +          <td><?php echo $item; ?></td>
    +        </tr>
    +        <?php } ?>
    +      </tbody>
    +    </table>
    +    <?php } ?>
    +  </body>
    +</html>
    +
    +

    This is complex because PHP code and HTML document are mixed. +NoTextEnhancer can separate PHP code from HTML document. +

    + +
    +example of using NoTextEnhancer with PHP file
    +
    $ erubis -l php --pi=php -N -E NoText --trim=false notext-example.php
    +    1:  
    +    2:  
    +    3:  
    +    4:      <?php if (!$list || count($list) == 0) { ?>
    +    5:  
    +    6:      <?php } else { ?>
    +    7:  
    +    8:  
    +    9:          <?php $i = 0; ?>
    +   10:          <?php foreach ($list as $item) { ?>
    +   11:                       <?php echo ++$i % 2 == 1 ? '#FFCCCC' : '#CCCCFF'; ?>
    +   12:                <?php echo $item; ?>
    +   13:  
    +   14:          <?php } ?>
    +   15:  
    +   16:  
    +   17:      <?php } ?>
    +   18:  
    +   19:  
    +
    +

    In the same way, NoCodeEnhancer can extract HTML tags. +

    + +
    +example of using NoCodeEnhancer with PHP file
    +
    $ erubis -l php --pi=php -N -E NoCode --trim=false notext-example.php
    +    1:  <html>
    +    2:    <body>
    +    3:      <h3>List</h3>
    +    4:      
    +    5:      <p>not found.</p>
    +    6:      
    +    7:      <table>
    +    8:        <tbody>
    +    9:          
    +   10:          
    +   11:          <tr bgcolor="">
    +   12:            <td></td>
    +   13:          </tr>
    +   14:          
    +   15:        </tbody>
    +   16:      </table>
    +   17:      
    +   18:    </body>
    +   19:  </html>
    +
    +
    + + + +

    Helper Class for mod_ruby

    +

    Thanks Andrew R Jackson, he developed 'erubis-run.rb' which enables you to use Erubis with mod_ruby. +

    +
      +
    1. Copy 'erubis-2.7.0/contrib/erubis-run.rb' to the 'RUBYLIBDIR/apache' directory (for example '/usr/local/lib/ruby/1.8/apache') which contains 'ruby-run.rb', 'eruby-run.rb', and so on. +
      $ cd erubis-2.7.0/
      +$ sudo copy contrib/erubis-run.rb /usr/local/lib/ruby/1.8/apache/
      +
      +
    2. +
    3. Add the following example to your 'httpd.conf' (for example '/usr/local/apache2/conf/httpd.conf') +
      LoadModule ruby_module modules/mod_ruby.so
      +<IfModule mod_ruby.c>
      +  RubyRequire apache/ruby-run
      +  RubyRequire apache/eruby-run
      +  RubyRequire apache/erubis-run
      +  <Location /erubis>
      +    SetHandler ruby-object
      +    RubyHandler Apache::ErubisRun.instance
      +  </Location>
      +  <Files *.rhtml>
      +    SetHandler ruby-object
      +    RubyHandler Apache::ErubisRun.instance
      +  </Files>
      +</IfModule>
      +
      +
    4. +
    5. Restart Apache web server. +
      $ sudo /usr/local/apache2/bin/apachectl stop
      +$ sudo /usr/local/apache2/bin/apachectl start
      +
      +
    6. +
    7. Create *.rhtml file, for example: +
      <html>
      + <body>
      +  Now is <%= Time.now %>
      +  Erubis version is <%= Erubis::VERSION %>
      + </body>
      +</html>
      +
      +
    8. +
    9. Change mode of your directory to be writable by web server process. +
      $ cd /usr/local/apache2/htdocs/erubis
      +$ sudo chgrp daemon .
      +$ sudo chmod 775 .
      +
      +
    10. +
    11. Access the *.rhtml file and you'll get the web page. +
    12. +
    +

    You must set your directories to be writable by web server process, because +Apache::ErubisRun calls Erubis::Eruby.load_file() internally which creates cache files +in the same directory in which '*.rhtml' file exists. +

    +
    + + + +

    Helper CGI Script for Apache

    +

    Erubis provides helper CGI script for Apache. +Using this script, it is very easy to publish *.rhtml files as *.html. +

    +
    ### install Erubis
    +$ tar xzf erubis-X.X.X.tar.gz
    +$ cd erubis-X.X.X/
    +$ ruby setup.py install
    +### copy files to ~/public_html
    +$ mkdir -p ~/public_html
    +$ cp public_html/_htaccess   ~/public_html/.htaccess
    +$ cp public_html/index.cgi   ~/public_html/
    +$ cp public_html/index.rhtml ~/public_html/
    +### add executable permission to index.cgi
    +$ chmod a+x ~/public_html/index.cgi
    +### edit .htaccess
    +$ vi ~/public_html/.htaccess
    +### (optional) edit index.cgi to configure
    +$ vi ~/public_html/index.cgi
    +
    +

    Edit ~/public_html/.htaccess and modify user name. +

    +
    +~/public_html/.htaccess
    +
    ## enable mod_rewrie
    +RewriteEngine on
    +## deny access to *.rhtml and *.cache
    +#RewriteRule \.(rhtml|cache)$ - [R=404,L]
    +RewriteRule \.(rhtml|cache)$ - [F,L]
    +## rewrite only if requested file is not found
    +RewriteCond %{SCRIPT_FILENAME} !-f
    +## handle request to *.html and directories by index.cgi
    +RewriteRule (\.html|/|^)$ /~username/index.cgi
    +#RewriteRule (\.html|/|^)$ index.cgi
    +
    +

    After these steps, *.rhtml will be published as *.html. +For example, if you access to http://host.domain/~username/index.html (or http://host.domain/~username/), file ~/public_html/index.rhtml will be displayed. +

    +
    + + + +

    Define method

    +

    Erubis::Eruby#def_method() defines instance method or singleton method. +

    + +
    require 'erubis'
    +s = "hello <%= name %>"
    +eruby = Erubis::Eruby.new(s)
    +filename = 'hello.rhtml'
    +
    +## define instance method to Dummy class (or module)
    +class Dummy; end
    +eruby.def_method(Dummy, 'render(name)', filename)  # filename is optional
    +p Dummy.new.render('world')    #=> "hello world"
    +
    +## define singleton method to dummy object
    +obj = Object.new
    +eruby.def_method(obj, 'render(name)', filename)    # filename is optional
    +p obj.render('world')          #=> "hello world"
    +
    +
    + + + +

    Benchmark

    +

    A benchmark script is included in Erubis package at 'erubis-2.7.0/benchark/' directory. +Here is an example result of benchmark. +

    +
    +MacOS X 10.4 Tiger, Intel CoreDuo 1.83GHz, Ruby1.8.6, eruby1.0.5, gcc4.0.1
    +
    $ cd erubis-2.7.0/benchmark/
    +$ ruby bench.rb -n 10000 -m execute
    +*** ntimes=10000, testmode=execute
    +                                    user     system      total        real
    +eruby                          12.720000   0.240000  12.960000 ( 12.971888)
    +ERB                            36.760000   0.350000  37.110000 ( 37.112019)
    +ERB(cached)                    11.990000   0.440000  12.430000 ( 12.430375)
    +Erubis::Eruby                  10.840000   0.300000  11.140000 ( 11.144426)
    +Erubis::Eruby(cached)           7.540000   0.410000   7.950000 (  7.969305)
    +Erubis::FastEruby              10.440000   0.300000  10.740000 ( 10.737808)
    +Erubis::FastEruby(cached)       6.940000   0.410000   7.350000 (  7.353666)
    +Erubis::TinyEruby               9.550000   0.290000   9.840000 (  9.851729)
    +Erubis::ArrayBufferEruby       11.010000   0.300000  11.310000 ( 11.314339)
    +Erubis::PrintOutEruby          11.640000   0.290000  11.930000 ( 11.942141)
    +Erubis::StdoutEruby            11.590000   0.300000  11.890000 ( 11.886512)
    +
    +

    This shows that... +

    +
      +
    • Erubis::Eruby runs more than 10 percent faster than eruby. +
    • +
    • Erubis::Eruby runs about 3 times faster than ERB. +
    • +
    • Caching (by Erubis::Eruby.load_file()) makes Erubis about 40-50 percent faster. +
    • +
    • Erubis::FastEruby is a litte faster than Erubis::Eruby. +
    • +
    • Array buffer (ArrayBufferEnhancer) is a little slower than string buffer (StringBufferEnhancer which Erubis::Eruby includes) +
    • +
    • $stdout and print() make Erubis a little slower. +
    • +
    • Erubis::TinyEruby (at 'erubis/tiny.rb') is the fastest in all eRuby implementations when no caching. +
    • +
    +

    Escaping HTML characters (such as '< > & "') makes Erubis more faster than eruby and ERB, +because Erubis::XmlHelper#escape_xml() works faster than CGI.escapeHTML() and ERB::Util#h(). +The following shows that Erubis runs more than 40 percent (when no-cached) or 90 percent (when cached) faster than eruby if HTML characters are escaped. +

    +
    +When escaping HTML characters with option '-e'
    +
    $ ruby bench.rb -n 10000 -m execute -ep
    +*** ntimes=10000, testmode=execute
    +                                    user     system      total        real
    +eruby                          21.700000   0.290000  21.990000 ( 22.050687)
    +ERB                            45.140000   0.390000  45.530000 ( 45.536976)
    +ERB(cached)                    20.340000   0.470000  20.810000 ( 20.822653)
    +Erubis::Eruby                  14.830000   0.310000  15.140000 ( 15.147930)
    +Erubis::Eruby(cached)          11.090000   0.420000  11.510000 ( 11.514954)
    +Erubis::FastEruby              14.850000   0.310000  15.160000 ( 15.172499)
    +Erubis::FastEruby(cached)      10.970000   0.430000  11.400000 ( 11.399605)
    +Erubis::ArrayBufferEruby       14.970000   0.300000  15.270000 ( 15.281061)
    +Erubis::PrintOutEruby          15.780000   0.300000  16.080000 ( 16.088289)
    +Erubis::StdoutEruby            15.840000   0.310000  16.150000 ( 16.235338)
    +
    +
    + + +
    + + + +

    Command Reference

    + +

    Usage

    +

    erubis [..options..] [file ...] +

    +
    + + + +

    Options

    +
    +
    +-h, --help
    +
    + Help. +
    +
    +-v
    +
    + Release version. +
    +
    +-x
    +
    + Show compiled source. +
    +
    +-X
    +
    + Show compiled source but only Ruby code. + This is equivarent to '-E NoText'. +
    +
    +-N
    +
    + Numbering: add line numbers. (for '-x/-X') +
    +
    +-U
    +
    + Unique mode: zip empty lines into a line. (for '-x/-X') +
    +
    +-C
    +
    + Compact: remove empty lines. (for '-x/-X') +
    +
    +-b
    +
    + Body only: no preamble nor postamble. (for '-x/-X') + This is equivarent to '--preamble=false --postamble=false'. +
    +
    +-z
    +
    + Syntax checking. +
    +
    +-e
    +
    + Escape. This is equivarent to '-E Escape'. +
    +
    +-p pattern
    +
    + Embedded pattern (default '<% %>'). + This is equivarent to '--pattern=pattern'. +
    +
    +-l lang
    +
    + Language name. + This option makes erubis command to compile script but no execute. +
    +
    +-E enhacers
    +
    + Enhancer name (Escape, PercentLine, ...). + It is able to specify several enhancer name separating with ',' + (ex. -f Escape,PercentLine,HeaderFooter). +
    +
    +-I path
    +
    + Require library path ($:). + It is able to specify several paths separating with ',' + (ex. -f path1,path2,path3). +
    +
    +-K kanji
    +
    + Kanji code (euc, sjis, utf8, or none) (default none). +
    +
    +-f datafile
    +
    + Context data file in YAML format ('*.yaml', '*.yml') or + Ruby script ('*.rb'). + It is able to specify several filenames separating with ',' + (ex. -f file1,file2,file3). +
    +
    +-c context
    +
    + Context data string in YAML inline style or Ruby code. +
    +
    +-T
    +
    + Don't expand tab characters in YAML file. +
    +
    +-S
    +
    + Convert mapping key from string to symbol in YAML file. +
    +
    +-B
    +
    + invoke Eruby#result() instead of Eruby#evaluate() +
    +
    +--pi[=name]
    +
    + parse '<?name ... ?>' instead of '<% ... %>' +
    +
    +--trim=false
    +
    + No trimming spaces around '<% %>'. +
    +
    +
    + + + +

    Properties

    +

    Some Eruby classes can take optional properties to change it's compile option. +For example, property '--indent=" "' may change indentation of compiled source code. +Try 'erubis -h' for details. +

    +
    + + +
    + + + +
    +
    + + + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/Makefile b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/Makefile new file mode 100644 index 0000000..0550ceb --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/Makefile @@ -0,0 +1,58 @@ +all = example.rb example.php example.c example.cpp example.java example.scm example.pl example.js + +all: $(all) + +example.rb: example.eruby + erubis -l ruby example.eruby > example.rb + + +example.php: example.ephp + erubis -l php example.ephp > example.php + +example.c: example.ec + erubis -bl c example.ec > example.c + +example.cpp: example.ecpp + erubis -bl cpp example.ecpp > example.cpp + +example.java: example.ejava + erubis -bl java example.ejava > example.java + +example.scm: example.escheme + erubis -l scheme --func=display example.escheme > example.scm +# erubis -l scheme example.escheme > example.scm + +example.pl: example.eperl + erubis -l perl example.eperl > example.pl + +example.js: example.ejs + erubis -l javascript example.ejs > example.js + + +###---------- + +src = example.eruby example.ephp example.ec example.ecpp example.ejava example.escheme example.eperl example.ejs Makefile + +clean: + rm -f `ruby -e 'puts(Dir.glob("*.*") - %w[$(src)])'` +# rm -f $(all) + +compile: example.bin example.class + +example.bin: example.c + cc -o example.bin example.c + g++ -o example.bin2 example.cpp + +example.class: example.java + jikes example.java + +output: $(all) example.bin example.class + erubis example.eruby > example.ruby.out + php example.php > example.php.out + ./example.bin '' 'b&b' '"ccc"' > example.c.out + ./example.bin2 '' 'b&b' '"ccc"' > example.cpp.out + java example > example.javexample.bin + gosh example.scm > example.scm.out +# guile example.scm > example.scm.out + perl example.pl > example.pl.out + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ec b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ec new file mode 100644 index 0000000..589bdb0 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ec @@ -0,0 +1,42 @@ +<% +#include + +void escape(char *str, FILE *out); + +int main(int argc, char *argv[]) +{ + int i; + +%> +

    Hello <%== argv[0] %>!

    + + + <% for (i = 1; i < argc; i++) { %> + "> + + + + <% } %> + +
    <%= "%d", i %><%== argv[i] %>
    +<% + + return 0; +} + +void escape(char *str, FILE *out) +{ + char *pch; + for (pch = str; *pch != '\0'; pch++) { + switch (*pch) { + case '&': fputs("&", out); break; + case '>': fputs(">", out); break; + case '<': fputs("<", out); break; + case '"': fputs(""", out); break; + case '\'': fputs("'", out); break; + default: fputc(*pch, out); + } + } +} + +%> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ecpp b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ecpp new file mode 100644 index 0000000..44978b5 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ecpp @@ -0,0 +1,33 @@ +<% +#include +#include +#include + +int main(int argc, char *argv[]) +{ + int i; + std::stringstream _buf; + +%> + + +

    Hello <%= argv[0] %>!

    + + + <% for (i = 1; i < argc; i++) { %> + "> + + + + <% } %> + +
    <%= i %><%= argv[i] %>
    + + +<% + + std::string _output = _buf.str(); + std::cout << _output; + return 0; +} +%> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ejava b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ejava new file mode 100644 index 0000000..217295d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ejava @@ -0,0 +1,45 @@ +<% +import java.util.*; + +public class example { + + public static void main(String[] args) { + String user = "Erubis"; + String[] list = { "", "b&b", "\"ccc\"" }; + StringBuffer _buf = new StringBuffer(); +%> +

    Hello <%== user %>!

    + + + <% for (int i = 0; i < list.length; i++) { %> + "> + + + + <% } %> + +
    <%= i + 1 %><%== list[i] %>
    +<% + System.out.print(_buf.toString()); + } + + public static String escape(String s) { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < s.length(); i++) { + char ch = s.charAt(i); + switch (ch) { + case '<': sb.append("<"); break; + case '>': sb.append(">"); break; + case '&': sb.append("&"); break; + case '"': sb.append("""); break; + default: sb.append(ch); + } + } + return sb.toString(); + } + + public static String escape(int i) { + return Integer.toString(i); + } +} +%> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ejs b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ejs new file mode 100644 index 0000000..67b7b0c --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ejs @@ -0,0 +1,16 @@ +<% + var user = 'Erubis'; + var list = ['', 'b&b', '"ccc"']; + %> +

    Hello <%= user %>!

    + + + <% var i; %> + <% for (i = 0; i < list.length; i++) { %> + + + + + <% } %> + +
    <%= i + 1 %><%= list[i] %>
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.eperl b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.eperl new file mode 100644 index 0000000..f1261dd --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.eperl @@ -0,0 +1,16 @@ +<% + my $user = 'Erubis'; + my @list = ('', 'b&b', '"ccc"'); +%> +

    Hello <%== $user %>!

    + + + <% $i = 0; %> + <% for $item (@list) { %> + "> + + + + <% } %> + +
    <%= $i %><%== $item %>
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ephp b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ephp new file mode 100644 index 0000000..b45d62d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.ephp @@ -0,0 +1,17 @@ +<% + $user = "World"; + $list = array('', 'b&b', '"ccc"'); +%> +

    Hello <%= $user %>!

    + + + <% $i = 0 %> + <% foreach ($list as $item) { %> + <% $i++; %> + + + + + <% } %> + +
    <%= $i %><%== $item %>
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.eruby b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.eruby new file mode 100644 index 0000000..ee1ed13 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.eruby @@ -0,0 +1,15 @@ +<% + user = 'Erubis' + list = ['', 'b&b', '"ccc"'] + %> +

    Hello <%= user %>!

    + + + <% list.each_with_index do |item, i| %> + + + + + <% end %> + +
    <%= i + 1 %><%== item %>
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.escheme b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.escheme new file mode 100644 index 0000000..419ef77 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/basic/example.escheme @@ -0,0 +1,26 @@ +<% +(let ((user "Erubis") + (items '("" "b&b" "\"ccc\"")) + (i 0)) + %> +

    Hello <%= user %>!

    + + +<% + (for-each + (lambda (item) + (set! i (+ i 1)) + %> + "> + + + +<% + ) ; lambda end + items) ; for-each end + %> + +
    <%= i %><%= item %>
    +<% +) ; let end +%> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/Makefile b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/Makefile new file mode 100644 index 0000000..de12772 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/Makefile @@ -0,0 +1,54 @@ +all = example.rb example.php example.c example.java example.scm example.pl example.js + +all: $(all) + +example.rb: example.eruby + erubis --pi -l ruby example.eruby > example.rb + + +example.php: example.ephp + erubis --pi -l php example.ephp > example.php + +example.c: example.ec + erubis --pi -bl c example.ec > example.c + +example.java: example.ejava + erubis --pi -bl java example.ejava > example.java + +example.scm: example.escheme + erubis --pi -l scheme --func=display example.escheme > example.scm +# erubis --pi -l scheme example.escheme > example.scm + +example.pl: example.eperl + erubis --pi -l perl example.eperl > example.pl + +example.js: example.ejs + erubis --pi -l javascript example.ejs > example.js + + +###---------- + +src = example.eruby example.ephp example.ec example.ejava example.escheme example.eperl example.ejs Makefile + +clean: + rm -f `ruby -e 'puts(Dir.glob("*.*") - %w[$(src)])'` +# rm -f $(all) + +compile: example.bin example.class + +example.bin: example.c + cc -o example.bin example.c + +example.class: example.java + jikes example.java + +output: $(all) example.bin example.class + erubis --pi example.eruby > example.ruby.result + #ruby example.rb > example.ruby.result + php example.php > example.php.result + ./example.bin '' 'b&b' '"ccc"' > example.c.result + java example > example.java.result + gosh example.scm > example.scm.result + #guile example.scm > example.scm.result + perl example.pl > example.pl.result + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.ec b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.ec new file mode 100644 index 0000000..ddec571 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.ec @@ -0,0 +1,42 @@ + + +void escape(char *str, FILE *out); + +int main(int argc, char *argv[]) +{ + int i; + +?> +

    Hello @!{argv[0]}@!

    + + + + + + + + + +
    @!{"%d", i}@@{argv[i]}@
    +': fputs(">", out); break; + case '<': fputs("<", out); break; + case '"': fputs(""", out); break; + case '\'': fputs("'", out); break; + default: fputc(*pch, out); + } + } +} + +?> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.ejava b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.ejava new file mode 100644 index 0000000..beca150 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.ejava @@ -0,0 +1,45 @@ +", "b&b", "\"ccc\"" }; + StringBuffer _buf = new StringBuffer(); +?> +

    Hello @{user}@!

    + + + + + + + + + +
    @!{i + 1}@@{list[i]}@
    +': sb.append(">"); break; + case '&': sb.append("&"); break; + case '"': sb.append("""); break; + default: sb.append(ch); + } + } + return sb.toString(); + } + + public static String escape(int i) { + return Integer.toString(i); + } +} +?> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.ejs b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.ejs new file mode 100644 index 0000000..f12ae42 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.ejs @@ -0,0 +1,16 @@ +', 'b&b', '"ccc"']; + ?> +

    Hello @{user}@!

    + + + + + + + + + + +
    @{i + 1}@@{list[i]}@
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.eperl b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.eperl new file mode 100644 index 0000000..c115ed4 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.eperl @@ -0,0 +1,16 @@ +', 'b&b', '"ccc"'); +?> +

    Hello @{$user}@!

    + + + + + + + + + + +
    @!{$i}@@{$item}@
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.ephp b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.ephp new file mode 100644 index 0000000..dbdd884 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.ephp @@ -0,0 +1,17 @@ +', 'b&b', '"ccc"'); +?> +

    Hello @{$user}@!

    + + + + + + + + + + + +
    @!{$i}@@{$item}@
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.eruby b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.eruby new file mode 100644 index 0000000..85218d1 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.eruby @@ -0,0 +1,15 @@ +', 'b&b', '"ccc"'] + ?> +

    Hello @{user}@!

    + + + + + + + + + +
    @!{i + 1}@@{item}@
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.escheme b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.escheme new file mode 100644 index 0000000..08b1cf5 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/examples/pi/example.escheme @@ -0,0 +1,26 @@ +" "b&b" "\"ccc\"")) + (i 0)) + ?> +

    Hello @!{user}@!

    + + + + + + + + + +
    @!{i}@@!{item}@
    + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/setup.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/setup.rb new file mode 100644 index 0000000..f1c9d9a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/setup.rb @@ -0,0 +1,1331 @@ +# +# setup.rb +# +# Copyright (c) 2000-2004 Minero Aoki +# +# This program is free software. +# You can distribute/modify this program under the terms of +# the GNU Lesser General Public License version 2.1. +# + +# +# For backward compatibility +# + +unless Enumerable.method_defined?(:map) + module Enumerable + alias map collect + end +end + +unless Enumerable.method_defined?(:detect) + module Enumerable + alias detect find + end +end + +unless Enumerable.method_defined?(:select) + module Enumerable + alias select find_all + end +end + +unless Enumerable.method_defined?(:reject) + module Enumerable + def reject + result = [] + each do |i| + result.push i unless yield(i) + end + result + end + end +end + +unless Enumerable.method_defined?(:inject) + module Enumerable + def inject(result) + each do |i| + result = yield(result, i) + end + result + end + end +end + +unless Enumerable.method_defined?(:any?) + module Enumerable + def any? + each do |i| + return true if yield(i) + end + false + end + end +end + +unless File.respond_to?(:read) + def File.read(fname) + open(fname) {|f| + return f.read + } + end +end + +# +# Application independent utilities +# + +def File.binread(fname) + open(fname, 'rb') {|f| + return f.read + } +end + +# for corrupted windows stat(2) +def File.dir?(path) + File.directory?((path[-1,1] == '/') ? path : path + '/') +end + +# +# Config +# + +if arg = ARGV.detect{|arg| /\A--rbconfig=/ =~ arg } + ARGV.delete(arg) + require arg.split(/=/, 2)[1] + $".push 'rbconfig.rb' +else + require 'rbconfig' +end + +def multipackage_install? + FileTest.directory?(File.dirname($0) + '/packages') +end + + +class ConfigTable + + c = ::Config::CONFIG + + rubypath = c['bindir'] + '/' + c['ruby_install_name'] + + major = c['MAJOR'].to_i + minor = c['MINOR'].to_i + teeny = c['TEENY'].to_i + version = "#{major}.#{minor}" + + # ruby ver. >= 1.4.4? + newpath_p = ((major >= 2) or + ((major == 1) and + ((minor >= 5) or + ((minor == 4) and (teeny >= 4))))) + + subprefix = lambda {|path| + path.sub(/\A#{Regexp.quote(c['prefix'])}/o, '$prefix') + } + + if c['rubylibdir'] + # V < 1.6.3 + stdruby = subprefix.call(c['rubylibdir']) + siteruby = subprefix.call(c['sitedir']) + versite = subprefix.call(c['sitelibdir']) + sodir = subprefix.call(c['sitearchdir']) + elsif newpath_p + # 1.4.4 <= V <= 1.6.3 + stdruby = "$prefix/lib/ruby/#{version}" + siteruby = subprefix.call(c['sitedir']) + versite = siteruby + '/' + version + sodir = "$site-ruby/#{c['arch']}" + else + # V < 1.4.4 + stdruby = "$prefix/lib/ruby/#{version}" + siteruby = "$prefix/lib/ruby/#{version}/site_ruby" + versite = siteruby + sodir = "$site-ruby/#{c['arch']}" + end + + if arg = c['configure_args'].split.detect {|arg| /--with-make-prog=/ =~ arg } + makeprog = arg.sub(/'/, '').split(/=/, 2)[1] + else + makeprog = 'make' + end + + common_descripters = [ + [ 'prefix', [ c['prefix'], + 'path', + 'path prefix of target environment' ] ], + [ 'std-ruby', [ stdruby, + 'path', + 'the directory for standard ruby libraries' ] ], + [ 'site-ruby-common', [ siteruby, + 'path', + 'the directory for version-independent non-standard ruby libraries' ] ], + [ 'site-ruby', [ versite, + 'path', + 'the directory for non-standard ruby libraries' ] ], + [ 'bin-dir', [ '$prefix/bin', + 'path', + 'the directory for commands' ] ], + [ 'rb-dir', [ '$site-ruby', + 'path', + 'the directory for ruby scripts' ] ], + [ 'so-dir', [ sodir, + 'path', + 'the directory for ruby extentions' ] ], + [ 'data-dir', [ '$prefix/share', + 'path', + 'the directory for shared data' ] ], + [ 'ruby-path', [ rubypath, + 'path', + 'path to set to #! line' ] ], + [ 'ruby-prog', [ rubypath, + 'name', + 'the ruby program using for installation' ] ], + [ 'make-prog', [ makeprog, + 'name', + 'the make program to compile ruby extentions' ] ], + [ 'without-ext', [ 'no', + 'yes/no', + 'does not compile/install ruby extentions' ] ] + ] + multipackage_descripters = [ + [ 'with', [ '', + 'name,name...', + 'package names that you want to install', + 'ALL' ] ], + [ 'without', [ '', + 'name,name...', + 'package names that you do not want to install', + 'NONE' ] ] + ] + if multipackage_install? + DESCRIPTER = common_descripters + multipackage_descripters + else + DESCRIPTER = common_descripters + end + + SAVE_FILE = 'config.save' + + def ConfigTable.each_name(&block) + keys().each(&block) + end + + def ConfigTable.keys + DESCRIPTER.map {|name, *dummy| name } + end + + def ConfigTable.each_definition(&block) + DESCRIPTER.each(&block) + end + + def ConfigTable.get_entry(name) + name, ent = DESCRIPTER.assoc(name) + ent + end + + def ConfigTable.get_entry!(name) + get_entry(name) or raise ArgumentError, "no such config: #{name}" + end + + def ConfigTable.add_entry(name, vals) + ConfigTable::DESCRIPTER.push [name,vals] + end + + def ConfigTable.remove_entry(name) + get_entry(name) or raise ArgumentError, "no such config: #{name}" + DESCRIPTER.delete_if {|n, arr| n == name } + end + + def ConfigTable.config_key?(name) + get_entry(name) ? true : false + end + + def ConfigTable.bool_config?(name) + ent = get_entry(name) or return false + ent[1] == 'yes/no' + end + + def ConfigTable.value_config?(name) + ent = get_entry(name) or return false + ent[1] != 'yes/no' + end + + def ConfigTable.path_config?(name) + ent = get_entry(name) or return false + ent[1] == 'path' + end + + + class << self + alias newobj new + end + + def ConfigTable.new + c = newobj() + c.initialize_from_table + c + end + + def ConfigTable.load + c = newobj() + c.initialize_from_file + c + end + + def initialize_from_table + @table = {} + DESCRIPTER.each do |k, (default, vname, desc, default2)| + @table[k] = default + end + end + + def initialize_from_file + raise InstallError, "#{File.basename $0} config first"\ + unless File.file?(SAVE_FILE) + @table = {} + File.foreach(SAVE_FILE) do |line| + k, v = line.split(/=/, 2) + @table[k] = v.strip + end + end + + def save + File.open(SAVE_FILE, 'w') {|f| + @table.each do |k, v| + f.printf "%s=%s\n", k, v if v + end + } + end + + def []=(k, v) + raise InstallError, "unknown config option #{k}"\ + unless ConfigTable.config_key?(k) + @table[k] = v + end + + def [](key) + return nil unless @table[key] + @table[key].gsub(%r<\$([^/]+)>) { self[$1] } + end + + def set_raw(key, val) + @table[key] = val + end + + def get_raw(key) + @table[key] + end + +end + + +module MetaConfigAPI + + def eval_file_ifexist(fname) + instance_eval File.read(fname), fname, 1 if File.file?(fname) + end + + def config_names + ConfigTable.keys + end + + def config?(name) + ConfigTable.config_key?(name) + end + + def bool_config?(name) + ConfigTable.bool_config?(name) + end + + def value_config?(name) + ConfigTable.value_config?(name) + end + + def path_config?(name) + ConfigTable.path_config?(name) + end + + def add_config(name, argname, default, desc) + ConfigTable.add_entry name,[default,argname,desc] + end + + def add_path_config(name, default, desc) + add_config name, 'path', default, desc + end + + def add_bool_config(name, default, desc) + add_config name, 'yes/no', default ? 'yes' : 'no', desc + end + + def set_config_default(name, default) + if bool_config?(name) + ConfigTable.get_entry!(name)[0] = (default ? 'yes' : 'no') + else + ConfigTable.get_entry!(name)[0] = default + end + end + + def remove_config(name) + ent = ConfigTable.get_entry(name) + ConfigTable.remove_entry name + ent + end + +end + +# +# File Operations +# + +module FileOperations + + def mkdir_p(dirname, prefix = nil) + dirname = prefix + dirname if prefix + $stderr.puts "mkdir -p #{dirname}" if verbose? + return if no_harm? + + # does not check '/'... it's too abnormal case + dirs = dirname.split(%r<(?=/)>) + if /\A[a-z]:\z/i =~ dirs[0] + disk = dirs.shift + dirs[0] = disk + dirs[0] + end + dirs.each_index do |idx| + path = dirs[0..idx].join('') + Dir.mkdir path unless File.dir?(path) + end + end + + def rm_f(fname) + $stderr.puts "rm -f #{fname}" if verbose? + return if no_harm? + + if File.exist?(fname) or File.symlink?(fname) + File.chmod 0777, fname + File.unlink fname + end + end + + def rm_rf(dn) + $stderr.puts "rm -rf #{dn}" if verbose? + return if no_harm? + + Dir.chdir dn + Dir.foreach('.') do |fn| + next if fn == '.' + next if fn == '..' + if File.dir?(fn) + verbose_off { + rm_rf fn + } + else + verbose_off { + rm_f fn + } + end + end + Dir.chdir '..' + Dir.rmdir dn + end + + def move_file(src, dest) + File.unlink dest if File.exist?(dest) + begin + File.rename src, dest + rescue + File.open(dest, 'wb') {|f| f.write File.binread(src) } + File.chmod File.stat(src).mode, dest + File.unlink src + end + end + + def install(from, dest, mode, prefix = nil) + $stderr.puts "install #{from} #{dest}" if verbose? + return if no_harm? + + realdest = prefix + dest if prefix + realdest = File.join(realdest, File.basename(from)) if File.dir?(realdest) + str = File.binread(from) + if diff?(str, realdest) + verbose_off { + rm_f realdest if File.exist?(realdest) + } + File.open(realdest, 'wb') {|f| + f.write str + } + File.chmod mode, realdest + + File.open("#{objdir_root()}/InstalledFiles", 'a') {|f| + if prefix + f.puts realdest.sub(prefix, '') + else + f.puts realdest + end + } + end + end + + def diff?(new_content, path) + return true unless File.exist?(path) + new_content != File.binread(path) + end + + def command(str) + $stderr.puts str if verbose? + system str or raise RuntimeError, "'system #{str}' failed" + end + + def ruby(str) + command config('ruby-prog') + ' ' + str + end + + def make(task = '') + command config('make-prog') + ' ' + task + end + + def extdir?(dir) + File.exist?(dir + '/MANIFEST') + end + + def all_files_in(dirname) + Dir.open(dirname) {|d| + return d.select {|ent| File.file?("#{dirname}/#{ent}") } + } + end + + REJECT_DIRS = %w( + CVS SCCS RCS CVS.adm + ) + + def all_dirs_in(dirname) + Dir.open(dirname) {|d| + return d.select {|n| File.dir?("#{dirname}/#{n}") } - %w(. ..) - REJECT_DIRS + } + end + +end + +# +# Main Installer +# + +class InstallError < StandardError; end + + +module HookUtils + + def run_hook(name) + try_run_hook "#{curr_srcdir()}/#{name}" or + try_run_hook "#{curr_srcdir()}/#{name}.rb" + end + + def try_run_hook(fname) + return false unless File.file?(fname) + begin + instance_eval File.read(fname), fname, 1 + rescue + raise InstallError, "hook #{fname} failed:\n" + $!.message + end + true + end + +end + + +module HookScriptAPI + + def get_config(key) + @config[key] + end + + alias config get_config + + def set_config(key, val) + @config[key] = val + end + + # + # srcdir/objdir (works only in the package directory) + # + + #abstract srcdir_root + #abstract objdir_root + #abstract relpath + + def curr_srcdir + "#{srcdir_root()}/#{relpath()}" + end + + def curr_objdir + "#{objdir_root()}/#{relpath()}" + end + + def srcfile(path) + "#{curr_srcdir()}/#{path}" + end + + def srcexist?(path) + File.exist?(srcfile(path)) + end + + def srcdirectory?(path) + File.dir?(srcfile(path)) + end + + def srcfile?(path) + File.file? srcfile(path) + end + + def srcentries(path = '.') + Dir.open("#{curr_srcdir()}/#{path}") {|d| + return d.to_a - %w(. ..) + } + end + + def srcfiles(path = '.') + srcentries(path).select {|fname| + File.file?(File.join(curr_srcdir(), path, fname)) + } + end + + def srcdirectories(path = '.') + srcentries(path).select {|fname| + File.dir?(File.join(curr_srcdir(), path, fname)) + } + end + +end + + +class ToplevelInstaller + + Version = '3.2.4' + Copyright = 'Copyright (c) 2000-2004 Minero Aoki' + + TASKS = [ + [ 'config', 'saves your configurations' ], + [ 'show', 'shows current configuration' ], + [ 'setup', 'compiles ruby extentions and others' ], + [ 'install', 'installs files' ], + [ 'clean', "does `make clean' for each extention" ], + [ 'distclean',"does `make distclean' for each extention" ] + ] + + def ToplevelInstaller.invoke + instance().invoke + end + + @singleton = nil + + def ToplevelInstaller.instance + @singleton ||= new(File.dirname($0)) + @singleton + end + + include MetaConfigAPI + + def initialize(ardir_root) + @config = nil + @options = { 'verbose' => true } + @ardir = File.expand_path(ardir_root) + end + + def inspect + "#<#{self.class} #{__id__()}>" + end + + def invoke + run_metaconfigs + task = parsearg_global() + @config = load_config(task) + __send__ "parsearg_#{task}" + init_installers + __send__ "exec_#{task}" + end + + def run_metaconfigs + eval_file_ifexist "#{@ardir}/metaconfig" + end + + def load_config(task) + case task + when 'config' + ConfigTable.new + when 'clean', 'distclean' + if File.exist?('config.save') + then ConfigTable.load + else ConfigTable.new + end + else + ConfigTable.load + end + end + + def init_installers + @installer = Installer.new(@config, @options, @ardir, File.expand_path('.')) + end + + # + # Hook Script API bases + # + + def srcdir_root + @ardir + end + + def objdir_root + '.' + end + + def relpath + '.' + end + + # + # Option Parsing + # + + def parsearg_global + valid_task = /\A(?:#{TASKS.map {|task,desc| task }.join '|'})\z/ + + while arg = ARGV.shift + case arg + when /\A\w+\z/ + raise InstallError, "invalid task: #{arg}" unless valid_task =~ arg + return arg + + when '-q', '--quiet' + @options['verbose'] = false + + when '--verbose' + @options['verbose'] = true + + when '-h', '--help' + print_usage $stdout + exit 0 + + when '-v', '--version' + puts "#{File.basename($0)} version #{Version}" + exit 0 + + when '--copyright' + puts Copyright + exit 0 + + else + raise InstallError, "unknown global option '#{arg}'" + end + end + + raise InstallError, <" + out.puts " ruby #{File.basename $0} [] []" + + fmt = " %-20s %s\n" + out.puts + out.puts 'Global options:' + out.printf fmt, '-q,--quiet', 'suppress message outputs' + out.printf fmt, ' --verbose', 'output messages verbosely' + out.printf fmt, '-h,--help', 'print this message' + out.printf fmt, '-v,--version', 'print version and quit' + out.printf fmt, ' --copyright', 'print copyright and quit' + + out.puts + out.puts 'Tasks:' + TASKS.each do |name, desc| + out.printf " %-10s %s\n", name, desc + end + + out.puts + out.puts 'Options for config:' + ConfigTable.each_definition do |name, (default, arg, desc, default2)| + out.printf " %-20s %s [%s]\n", + '--'+ name + (ConfigTable.bool_config?(name) ? '' : '='+arg), + desc, + default2 || default + end + out.printf " %-20s %s [%s]\n", + '--rbconfig=path', 'your rbconfig.rb to load', "running ruby's" + + out.puts + out.puts 'Options for install:' + out.printf " %-20s %s [%s]\n", + '--no-harm', 'only display what to do if given', 'off' + out.printf " %-20s %s [%s]\n", + '--prefix', 'install path prefix', '$prefix' + + out.puts + end + + # + # Task Handlers + # + + def exec_config + @installer.exec_config + @config.save # must be final + end + + def exec_setup + @installer.exec_setup + end + + def exec_install + @installer.exec_install + end + + def exec_show + ConfigTable.each_name do |k| + v = @config.get_raw(k) + if not v or v.empty? + v = '(not specified)' + end + printf "%-10s %s\n", k, v + end + end + + def exec_clean + @installer.exec_clean + end + + def exec_distclean + @installer.exec_distclean + end + +end + + +class ToplevelInstallerMulti < ToplevelInstaller + + include HookUtils + include HookScriptAPI + include FileOperations + + def initialize(ardir) + super + @packages = all_dirs_in("#{@ardir}/packages") + raise 'no package exists' if @packages.empty? + end + + def run_metaconfigs + eval_file_ifexist "#{@ardir}/metaconfig" + @packages.each do |name| + eval_file_ifexist "#{@ardir}/packages/#{name}/metaconfig" + end + end + + def init_installers + @installers = {} + @packages.each do |pack| + @installers[pack] = Installer.new(@config, @options, + "#{@ardir}/packages/#{pack}", + "packages/#{pack}") + end + + with = extract_selection(config('with')) + without = extract_selection(config('without')) + @selected = @installers.keys.select {|name| + (with.empty? or with.include?(name)) \ + and not without.include?(name) + } + end + + def extract_selection(list) + a = list.split(/,/) + a.each do |name| + raise InstallError, "no such package: #{name}" \ + unless @installers.key?(name) + end + a + end + + def print_usage(f) + super + f.puts 'Inluded packages:' + f.puts ' ' + @packages.sort.join(' ') + f.puts + end + + # + # multi-package metaconfig API + # + + attr_reader :packages + + def declare_packages(list) + raise 'package list is empty' if list.empty? + list.each do |name| + raise "directory packages/#{name} does not exist"\ + unless File.dir?("#{@ardir}/packages/#{name}") + end + @packages = list + end + + # + # Task Handlers + # + + def exec_config + run_hook 'pre-config' + each_selected_installers {|inst| inst.exec_config } + run_hook 'post-config' + @config.save # must be final + end + + def exec_setup + run_hook 'pre-setup' + each_selected_installers {|inst| inst.exec_setup } + run_hook 'post-setup' + end + + def exec_install + run_hook 'pre-install' + each_selected_installers {|inst| inst.exec_install } + run_hook 'post-install' + end + + def exec_clean + rm_f 'config.save' + run_hook 'pre-clean' + each_selected_installers {|inst| inst.exec_clean } + run_hook 'post-clean' + end + + def exec_distclean + rm_f 'config.save' + run_hook 'pre-distclean' + each_selected_installers {|inst| inst.exec_distclean } + run_hook 'post-distclean' + end + + # + # lib + # + + def each_selected_installers + Dir.mkdir 'packages' unless File.dir?('packages') + @selected.each do |pack| + $stderr.puts "Processing the package `#{pack}' ..." if @options['verbose'] + Dir.mkdir "packages/#{pack}" unless File.dir?("packages/#{pack}") + Dir.chdir "packages/#{pack}" + yield @installers[pack] + Dir.chdir '../..' + end + end + + def verbose? + @options['verbose'] + end + + def no_harm? + @options['no-harm'] + end + +end + + +class Installer + + FILETYPES = %w( bin lib ext data ) + + include HookScriptAPI + include HookUtils + include FileOperations + + def initialize(config, opt, srcroot, objroot) + @config = config + @options = opt + @srcdir = File.expand_path(srcroot) + @objdir = File.expand_path(objroot) + @currdir = '.' + end + + def inspect + "#<#{self.class} #{File.basename(@srcdir)}>" + end + + # + # Hook Script API bases + # + + def srcdir_root + @srcdir + end + + def objdir_root + @objdir + end + + def relpath + @currdir + end + + # + # configs/options + # + + def no_harm? + @options['no-harm'] + end + + def verbose? + @options['verbose'] + end + + def verbose_off + begin + save, @options['verbose'] = @options['verbose'], false + yield + ensure + @options['verbose'] = save + end + end + + # + # TASK config + # + + def exec_config + exec_task_traverse 'config' + end + + def config_dir_bin(rel) + end + + def config_dir_lib(rel) + end + + def config_dir_ext(rel) + extconf if extdir?(curr_srcdir()) + end + + def extconf + opt = @options['config-opt'].join(' ') + command "#{config('ruby-prog')} #{curr_srcdir()}/extconf.rb #{opt}" + end + + def config_dir_data(rel) + end + + # + # TASK setup + # + + def exec_setup + exec_task_traverse 'setup' + end + + def setup_dir_bin(rel) + all_files_in(curr_srcdir()).each do |fname| + adjust_shebang "#{curr_srcdir()}/#{fname}" + end + end + + # modify: #!/usr/bin/ruby + # modify: #! /usr/bin/ruby + # modify: #!ruby + # not modify: #!/usr/bin/env ruby + SHEBANG_RE = /\A\#!\s*\S*ruby\S*/ + + def adjust_shebang(path) + return if no_harm? + + tmpfile = File.basename(path) + '.tmp' + begin + File.open(path, 'rb') {|r| + File.open(tmpfile, 'wb') {|w| + first = r.gets + return unless SHEBANG_RE =~ first + + $stderr.puts "adjusting shebang: #{File.basename path}" if verbose? + w.print first.sub(SHEBANG_RE, '#!' + config('ruby-path')) + w.write r.read + } + } + move_file tmpfile, File.basename(path) + ensure + File.unlink tmpfile if File.exist?(tmpfile) + end + end + + def setup_dir_lib(rel) + end + + def setup_dir_ext(rel) + make if extdir?(curr_srcdir()) + end + + def setup_dir_data(rel) + end + + # + # TASK install + # + + def exec_install + exec_task_traverse 'install' + end + + def install_dir_bin(rel) + install_files collect_filenames_auto(), "#{config('bin-dir')}/#{rel}", 0755 + end + + def install_dir_lib(rel) + install_files ruby_scripts(), "#{config('rb-dir')}/#{rel}", 0644 + end + + def install_dir_ext(rel) + return unless extdir?(curr_srcdir()) + install_files ruby_extentions('.'), + "#{config('so-dir')}/#{File.dirname(rel)}", + 0555 + end + + def install_dir_data(rel) + install_files collect_filenames_auto(), "#{config('data-dir')}/#{rel}", 0644 + end + + def install_files(list, dest, mode) + mkdir_p dest, @options['install-prefix'] + list.each do |fname| + install fname, dest, mode, @options['install-prefix'] + end + end + + def ruby_scripts + collect_filenames_auto().select {|n| /\.rb\z/ =~ n } + end + + # picked up many entries from cvs-1.11.1/src/ignore.c + reject_patterns = %w( + core RCSLOG tags TAGS .make.state + .nse_depinfo #* .#* cvslog.* ,* .del-* *.olb + *~ *.old *.bak *.BAK *.orig *.rej _$* *$ + + *.org *.in .* + ) + mapping = { + '.' => '\.', + '$' => '\$', + '#' => '\#', + '*' => '.*' + } + REJECT_PATTERNS = Regexp.new('\A(?:' + + reject_patterns.map {|pat| + pat.gsub(/[\.\$\#\*]/) {|ch| mapping[ch] } + }.join('|') + + ')\z') + + def collect_filenames_auto + mapdir((existfiles() - hookfiles()).reject {|fname| + REJECT_PATTERNS =~ fname + }) + end + + def existfiles + all_files_in(curr_srcdir()) | all_files_in('.') + end + + def hookfiles + %w( pre-%s post-%s pre-%s.rb post-%s.rb ).map {|fmt| + %w( config setup install clean ).map {|t| sprintf(fmt, t) } + }.flatten + end + + def mapdir(filelist) + filelist.map {|fname| + if File.exist?(fname) # objdir + fname + else # srcdir + File.join(curr_srcdir(), fname) + end + } + end + + def ruby_extentions(dir) + _ruby_extentions(dir) or + raise InstallError, "no ruby extention exists: 'ruby #{$0} setup' first" + end + + DLEXT = /\.#{ ::Config::CONFIG['DLEXT'] }\z/ + + def _ruby_extentions(dir) + Dir.open(dir) {|d| + return d.select {|fname| DLEXT =~ fname } + } + end + + # + # TASK clean + # + + def exec_clean + exec_task_traverse 'clean' + rm_f 'config.save' + rm_f 'InstalledFiles' + end + + def clean_dir_bin(rel) + end + + def clean_dir_lib(rel) + end + + def clean_dir_ext(rel) + return unless extdir?(curr_srcdir()) + make 'clean' if File.file?('Makefile') + end + + def clean_dir_data(rel) + end + + # + # TASK distclean + # + + def exec_distclean + exec_task_traverse 'distclean' + rm_f 'config.save' + rm_f 'InstalledFiles' + end + + def distclean_dir_bin(rel) + end + + def distclean_dir_lib(rel) + end + + def distclean_dir_ext(rel) + return unless extdir?(curr_srcdir()) + make 'distclean' if File.file?('Makefile') + end + + # + # lib + # + + def exec_task_traverse(task) + run_hook "pre-#{task}" + FILETYPES.each do |type| + if config('without-ext') == 'yes' and type == 'ext' + $stderr.puts 'skipping ext/* by user option' if verbose? + next + end + traverse task, type, "#{task}_dir_#{type}" + end + run_hook "post-#{task}" + end + + def traverse(task, rel, mid) + dive_into(rel) { + run_hook "pre-#{task}" + __send__ mid, rel.sub(%r[\A.*?(?:/|\z)], '') + all_dirs_in(curr_srcdir()).each do |d| + traverse task, "#{rel}/#{d}", mid + end + run_hook "post-#{task}" + } + end + + def dive_into(rel) + return unless File.dir?("#{@srcdir}/#{rel}") + + dir = File.basename(rel) + Dir.mkdir dir unless File.dir?(dir) + prevdir = Dir.pwd + Dir.chdir dir + $stderr.puts '---> ' + rel if verbose? + @currdir = rel + yield + Dir.chdir prevdir + $stderr.puts '<--- ' + rel if verbose? + @currdir = File.dirname(rel) + end + +end + + +if $0 == __FILE__ + begin + if multipackage_install? + ToplevelInstallerMulti.invoke + else + ToplevelInstaller.invoke + end + rescue + raise if $DEBUG + $stderr.puts $!.message + $stderr.puts "Try 'ruby #{$0} --help' for detailed usage." + exit 1 + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/assert-text-equal.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/assert-text-equal.rb new file mode 100644 index 0000000..9047578 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/assert-text-equal.rb @@ -0,0 +1,44 @@ +### +### $Release: 2.7.0 $ +### copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +### + +require 'test/unit' +require 'tempfile' + + +module Test + module Unit + class TestCase + + def assert_text_equal(expected, actual, message=nil, diffopt='-u', flag_cut=true) + if expected == actual + assert(true) + return + end + if expected[-1] != ?\n || actual[-1] != ?\n + expected += "\n" + actual += "\n" + end + begin + expfile = Tempfile.new(".expected.") + expfile.write(expected); expfile.flush() + actfile = Tempfile.new(".actual.") + actfile.write(actual); actfile.flush() + diff = `diff #{diffopt} #{expfile.path} #{actfile.path}` + ensure + expfile.close(true) if expfile + actfile.close(true) if actfile + end + # cut 1st & 2nd lines + message = (flag_cut ? diff.gsub(/\A.*\n.*\n/, '') : diff) unless message + #raise Test::Unit::AssertionFailedError.new(message) + assert_block(message) { false } # or assert(false, message) + end + + alias assert_equal_with_diff assert_text_equal # for compatibility + alias assert_text_equals assert_text_equal # for typo + + end + end +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/Example.ejava b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/Example.ejava new file mode 100644 index 0000000..1fc2fe0 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/Example.ejava @@ -0,0 +1,55 @@ +<% +import java.util.*; + +public class Example { + private String user; + private String[] list; + public example(String user, String[] list) { + this.user = user; + this.list = list; + } + + public String view() { + StringBuffer _buf = new StringBuffer(); +%> + + +

    Hello <%= user %>!

    + + + <% for (int i = 0; i < list.length; i++) { %> + "> + + + + <% } %> + +
    <%= i + 1 %><%== list[i] %>
    + + +<% + return _buf.toString(); + } + + public static void main(String[] args) { + String[] list = { "", "b&b", "\"ccc\"" }; + Example ex = Example.new("Erubis", list); + System.out.print(ex.view()); + } + + public static String escape(String s) { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < s.length(); i++) { + char ch = s.charAt(i); + switch (ch) { + case '<': sb.append("<"); break; + case '>': sb.append(">"); break; + case '&': sb.append("&"); break; + case '"': sb.append("""); break; + default: sb.append(ch); + } + } + return sb.toString(); + } +} +%> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/array_example.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/array_example.result new file mode 100644 index 0000000..ebd00f4 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/array_example.result @@ -0,0 +1,9 @@ +$ erubis -xE Array example.eruby +_buf = []; _buf << '
    +'; for item in list + _buf << '

    '; _buf << ( item ).to_s; _buf << '

    +

    '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '

    +'; end + _buf << '
    +'; +_buf diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/arraybuffer_example.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/arraybuffer_example.result new file mode 100644 index 0000000..d2906db --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/arraybuffer_example.result @@ -0,0 +1,9 @@ +$ erubis -xE ArrayBuffer example.eruby +_buf = []; _buf << '
    +'; for item in list + _buf << '

    '; _buf << ( item ).to_s; _buf << '

    +

    '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '

    +'; end + _buf << '
    +'; +_buf.join diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/bipattern-example.rhtml b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/bipattern-example.rhtml new file mode 100644 index 0000000..a47fda8 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/bipattern-example.rhtml @@ -0,0 +1,4 @@ +<% for item in list %> + [= item =] + [== item =] +<% end %> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/bipattern_example.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/bipattern_example.result new file mode 100644 index 0000000..15159b5 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/bipattern_example.result @@ -0,0 +1,6 @@ +$ erubis -xE BiPattern bipattern-example.rhtml +_buf = ''; for item in list + _buf << ' '; _buf << ( item ).to_s; _buf << ' + '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << ' +'; end +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/bufvar-example.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/bufvar-example.rb new file mode 100644 index 0000000..928d13d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/bufvar-example.rb @@ -0,0 +1,10 @@ +require 'erubis' +input = File.read('example.eruby') + +puts "----- default -----" +eruby = Erubis::FastEruby.new(input) +puts eruby.src + +puts "----- with :bufvar option -----" +eruby = Erubis::FastEruby.new(input, :bufvar=>'@_out_buf') +print eruby.src diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/bufvar-example.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/bufvar-example.result new file mode 100644 index 0000000..47856fa --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/bufvar-example.result @@ -0,0 +1,17 @@ +$ ruby bufvar-example.rb +----- default ----- +_buf = ''; _buf << %Q`
    \n` + for item in list + _buf << %Q`

    #{ item }

    +

    #{Erubis::XmlHelper.escape_xml( item )}

    \n` + end + _buf << %Q`
    \n` +_buf.to_s +----- with :bufvar option ----- +@_out_buf = ''; @_out_buf << %Q`
    \n` + for item in list + @_out_buf << %Q`

    #{ item }

    +

    #{Erubis::XmlHelper.escape_xml( item )}

    \n` + end + @_out_buf << %Q`
    \n` +@_out_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/context.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/context.rb new file mode 100644 index 0000000..66a6663 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/context.rb @@ -0,0 +1,6 @@ +@title = 'Users List' +@users = [ + { 'name'=>'foo', 'mail'=>'foo@mail.com' }, + { 'name'=>'bar', 'mail'=>'bar@mail.net' }, + { 'name'=>'baz', 'mail'=>'baz@mail.org' }, +] diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/context.yaml b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/context.yaml new file mode 100644 index 0000000..25f4e19 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/context.yaml @@ -0,0 +1,8 @@ +title: Users List +users: + - name: foo + mail: foo@mail.com + - name: bar + mail: bar@mail.net + - name: baz + mail: baz@mail.org diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/def_method.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/def_method.rb new file mode 100644 index 0000000..3b378da --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/def_method.rb @@ -0,0 +1,14 @@ +require 'erubis' +s = "hello <%= name %>" +eruby = Erubis::Eruby.new(s) +filename = 'hello.rhtml' + +## define instance method to Dummy class (or module) +class Dummy; end +eruby.def_method(Dummy, 'render(name)', filename) # filename is optional +p Dummy.new.render('world') #=> "hello world" + +## define singleton method to dummy object +obj = Object.new +eruby.def_method(obj, 'render(name)', filename) # filename is optional +p obj.render('world') #=> "hello world" diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/def_method.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/def_method.result new file mode 100644 index 0000000..f2a1b5b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/def_method.result @@ -0,0 +1,3 @@ +$ ruby def_method.rb +"hello world" +"hello world" diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/escape_example.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/escape_example.result new file mode 100644 index 0000000..95de2dc --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/escape_example.result @@ -0,0 +1,9 @@ +$ erubis -xE Escape example.eruby +_buf = ''; _buf << '
    +'; for item in list + _buf << '

    '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '

    +

    '; _buf << ( item ).to_s; _buf << '

    +'; end + _buf << '
    +'; +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.ec b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.ec new file mode 100644 index 0000000..a804f05 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.ec @@ -0,0 +1,27 @@ +<% +#include + +int main(int argc, char *argv[]) +{ + int i; + +%> + + +

    Hello <%= "%s", argv[0] %>!

    + + + <% for (i = 1; i < argc; i++) { %> + "> + + + + <% } %> + +
    <%= "%d", i %><%= "%s", argv[i] %>
    + + +<% + return 0; +} +%> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.ecpp b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.ecpp new file mode 100644 index 0000000..f97c4e2 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.ecpp @@ -0,0 +1,30 @@ +<% +#include +#include +#include + +int main(int argc, char *argv[]) +{ + std::stringstream _buf; +%> + + +

    Hello <%= argv[0] %>!

    + + + <% for (int i = 1; i < argc; i++) { %> + "> + + + + <% } %> + +
    <%= i %><%= argv[i] %>
    + + +<% + std::string output = _buf.str(); + std::cout << output; + return 0; +} +%> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.ejs b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.ejs new file mode 100644 index 0000000..44f2e3f --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.ejs @@ -0,0 +1,20 @@ +<% + var user = 'Erubis'; + var list = ['', 'b&b', '"ccc"']; + %> + + +

    Hello <%= user %>!

    + + + <% var i; %> + <% for (i = 0; i < list.length; i++) { %> + + + + + <% } %> + +
    <%= i + 1 %><%= list[i] %>
    + + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.eperl b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.eperl new file mode 100644 index 0000000..46f7508 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.eperl @@ -0,0 +1,18 @@ +<% + my $user = 'Erubis'; + my @list = ('', 'b&b', '"ccc"'); +%> + + +

    Hello <%= $user %>!

    + + <% $i = 0; %> + <% for $item (@list) { %> + "> + + + + <% } %> +
    <%= $i %><%= $item %>
    + + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.ephp b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.ephp new file mode 100644 index 0000000..d92b46c --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.ephp @@ -0,0 +1,18 @@ + + + +

    Hello <%= $user %>!

    + + + <% $i = 0; %> + <% foreach ($list as $item) { %> + <% $i++; %> + + + + + <% } %> + +
    <%= $i %><%== $item %>
    + + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.eruby b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.eruby new file mode 100644 index 0000000..564c876 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.eruby @@ -0,0 +1,6 @@ +
    +<% for item in list %> +

    <%= item %>

    +

    <%== item %>

    +<% end %> +
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.escheme b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.escheme new file mode 100644 index 0000000..e2296ba --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example.escheme @@ -0,0 +1,28 @@ + + +<% +(let ((user "Erubis") + (items '("" "b&b" "\"ccc\"")) + (i 0)) + %> +

    Hello <%= user %>!

    + +<% + (for-each + (lambda (item) + (set! i (+ i 1)) + %> + "> + + + +<% + ) ; lambda end + items) ; for-each end + %> +
    <%= i %><%= item %>
    +<% +) ; let end +%> + + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example1.eruby b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example1.eruby new file mode 100644 index 0000000..84bd1fd --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example1.eruby @@ -0,0 +1,6 @@ +
      + <% for item in list %> +
    • <%= item %>
    • + <% end %> + <%# here is ignored because starting with '#' %> +
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example1.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example1.rb new file mode 100644 index 0000000..8838206 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example1.rb @@ -0,0 +1,17 @@ +require 'erubis' +input = File.read('example1.eruby') +eruby = Erubis::Eruby.new(input) # create Eruby object + +puts "---------- script source ---" +puts eruby.src # print script source + +puts "---------- result ----------" +list = ['aaa', 'bbb', 'ccc'] +puts eruby.result(binding()) # get result +## or puts eruby.result(:list=>list) # or pass Hash instead of Binding + +## # or +## eruby = Erubis::Eruby.new +## input = File.read('example1.eruby') +## src = eruby.convert(input) +## eval src diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example1.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example1.result new file mode 100644 index 0000000..95ee6bb --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example1.result @@ -0,0 +1,16 @@ +$ ruby example1.rb +---------- script source --- +_buf = ''; _buf << '
      +'; for item in list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • +'; end + + _buf << '
    +'; +_buf.to_s +---------- result ---------- +
      +
    • aaa
    • +
    • bbb
    • +
    • ccc
    • +
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example10.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example10.rb new file mode 100644 index 0000000..b459cc0 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example10.rb @@ -0,0 +1,4 @@ +require 'erubis' +input = File.read('example10.xhtml') +eruby = Erubis::PI::Eruby.new(input) +print eruby.src diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example10.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example10.result new file mode 100644 index 0000000..b080fa8 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example10.result @@ -0,0 +1,17 @@ +$ ruby example10.rb +_buf = ''; _buf << ' +'; + lang = 'en' + list = ['', 'b&b', '"ccc"'] + + _buf << ' + +
      +'; for item in list + _buf << '
    • '; _buf << Erubis::XmlHelper.escape_xml(item); _buf << '
    • +'; end + _buf << '
    + + +'; +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example10.xhtml b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example10.xhtml new file mode 100644 index 0000000..3ec00d5 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example10.xhtml @@ -0,0 +1,14 @@ + +', 'b&b', '"ccc"'] +?> + + +
      + +
    • @{item}@
    • + +
    + + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example10_x.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example10_x.result new file mode 100644 index 0000000..d19e078 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example10_x.result @@ -0,0 +1,17 @@ +$ erubis -x --pi example10.xhtml +_buf = ''; _buf << ' +'; + lang = 'en' + list = ['', 'b&b', '"ccc"'] + + _buf << ' + +
      +'; for item in list + _buf << '
    • '; _buf << Erubis::XmlHelper.escape_xml(item); _buf << '
    • +'; end + _buf << '
    + + +'; +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11.php b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11.php new file mode 100644 index 0000000..354ffc0 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11.php @@ -0,0 +1,20 @@ + + + +

    List

    + +

    not found.

    + + + + + + + + + + +
    + + + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11.result new file mode 100644 index 0000000..f69bb2d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11.result @@ -0,0 +1,23 @@ +$ erubis -X example11.rhtml +_buf = ''; + + + + + + if @list.nil? || @list.empty? + + else + + + @list.each_with_index do |item, i| + _buf << ( i % 2 == 0 ? '#FCC' : '#CCF' ).to_s; + _buf << ( item ).to_s; + + end + + + end + + +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11.rhtml b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11.rhtml new file mode 100644 index 0000000..93d9326 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11.rhtml @@ -0,0 +1,21 @@ + + + + +

    List

    + <% if @list.nil? || @list.empty? %> +

    not found.

    + <% else %> + + + <% @list.each_with_index do |item, i| %> + + + + <% end %> + +
    <%= item %>
    + <% end %> + + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11_C.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11_C.result new file mode 100644 index 0000000..a394dae --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11_C.result @@ -0,0 +1,10 @@ +$ erubis -XC example11.rhtml +_buf = ''; + if @list.nil? || @list.empty? + else + @list.each_with_index do |item, i| + _buf << ( i % 2 == 0 ? '#FCC' : '#CCF' ).to_s; + _buf << ( item ).to_s; + end + end +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11_N.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11_N.result new file mode 100644 index 0000000..ef0ad4a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11_N.result @@ -0,0 +1,16 @@ +$ erubis -XNU example11.rhtml + 1: _buf = ''; + + 7: if @list.nil? || @list.empty? + + 9: else + + 12: @list.each_with_index do |item, i| + 13: _buf << ( i % 2 == 0 ? '#FCC' : '#CCF' ).to_s; + 14: _buf << ( item ).to_s; + + 16: end + + 19: end + + 22: _buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11_U.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11_U.result new file mode 100644 index 0000000..2c89bbb --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11_U.result @@ -0,0 +1,16 @@ +$ erubis -XU example11.rhtml +_buf = ''; + + if @list.nil? || @list.empty? + + else + + @list.each_with_index do |item, i| + _buf << ( i % 2 == 0 ? '#FCC' : '#CCF' ).to_s; + _buf << ( item ).to_s; + + end + + end + +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11_php.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11_php.result new file mode 100644 index 0000000..65f62dd --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example11_php.result @@ -0,0 +1,15 @@ +$ erubis -XNU -l php --pi=php --trim=false example11.php + + 5: + + 7: + + 10: + 11: + 12: + 13: + + 15: + + 18: + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example1_x.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example1_x.result new file mode 100644 index 0000000..ab305c5 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example1_x.result @@ -0,0 +1,9 @@ +$ erubis -x example1.eruby +_buf = ''; _buf << '
      +'; for item in list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • +'; end + + _buf << '
    +'; +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2.eruby b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2.eruby new file mode 100644 index 0000000..a9ef194 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2.eruby @@ -0,0 +1,7 @@ +
      + <% for item in list %> +
    • + <%= item %> +
    • + <% end %> +
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2.rb new file mode 100644 index 0000000..29b969b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2.rb @@ -0,0 +1,10 @@ +require 'erubis' +input = File.read('example2.eruby') +eruby = Erubis::Eruby.new(input, :trim=>false) + +puts "----- script source ---" +puts eruby.src # print script source + +puts "----- result ----------" +list = ['aaa', 'bbb', 'ccc'] +puts eruby.result(binding()) # get result diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2.result new file mode 100644 index 0000000..0a5b2d5 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2.result @@ -0,0 +1,27 @@ +$ ruby example2.rb +----- script source --- +_buf = ''; _buf << '
      +'; _buf << ' '; for item in list ; _buf << ' +'; _buf << '
    • + '; _buf << ( item ).to_s; _buf << ' +'; _buf << '
    • +'; _buf << ' '; end ; _buf << ' +'; _buf << '
    +'; +_buf.to_s +----- result ---------- +
      + +
    • + aaa +
    • + +
    • + bbb +
    • + +
    • + ccc +
    • + +
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2_trim.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2_trim.result new file mode 100644 index 0000000..1f4e6f0 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2_trim.result @@ -0,0 +1,10 @@ +$ erubis -x --trim=false example2.eruby +_buf = ''; _buf << '
      +'; _buf << ' '; for item in list ; _buf << ' +'; _buf << '
    • + '; _buf << ( item ).to_s; _buf << ' +'; _buf << '
    • +'; _buf << ' '; end ; _buf << ' +'; _buf << '
    +'; +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2_x.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2_x.result new file mode 100644 index 0000000..81d0dcf --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example2_x.result @@ -0,0 +1,10 @@ +$ erubis -x example2.eruby +_buf = ''; _buf << '
      +'; for item in list + _buf << '
    • + '; _buf << ( item ).to_s; _buf << ' +'; _buf << '
    • +'; end + _buf << '
    +'; +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example3.eruby b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example3.eruby new file mode 100644 index 0000000..9bb5e35 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example3.eruby @@ -0,0 +1,6 @@ +<% for item in list %> +

    <%= item %>

    +

    <%== item %>

    +

    <%=== item %>

    + +<% end %> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example3.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example3.rb new file mode 100644 index 0000000..482b511 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example3.rb @@ -0,0 +1,10 @@ +require 'erubis' +input = File.read('example3.eruby') +eruby = Erubis::EscapedEruby.new(input) # or Erubis::XmlEruby + +puts "----- script source ---" +puts eruby.src # print script source + +puts "----- result ----------" +list = ['', 'b&b', '"ccc"'] +puts eruby.result(binding()) # get result diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example31.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example31.result new file mode 100644 index 0000000..9c37839 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example31.result @@ -0,0 +1,22 @@ +$ ruby example3.rb 2> stderr.log +----- script source --- +_buf = ''; for item in list + _buf << '

    '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '

    +

    '; _buf << ( item ).to_s; _buf << '

    +

    '; $stderr.puts("*** debug: item=#{(item).inspect}"); _buf << '

    + +'; end +_buf.to_s +----- result ---------- +

    <aaa>

    +

    +

    + +

    b&b

    +

    b&b

    +

    + +

    "ccc"

    +

    "ccc"

    +

    + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example32.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example32.result new file mode 100644 index 0000000..692524a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example32.result @@ -0,0 +1,4 @@ +$ cat stderr.log +*** debug: item="" +*** debug: item="b&b" +*** debug: item="\"ccc\"" diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example3_e.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example3_e.result new file mode 100644 index 0000000..b5b45c2 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example3_e.result @@ -0,0 +1,8 @@ +$ erubis -l ruby -e example3.eruby +_buf = ''; for item in list + _buf << '

    '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '

    +

    '; _buf << ( item ).to_s; _buf << '

    +

    '; $stderr.puts("*** debug: item=#{(item).inspect}"); _buf << '

    + +'; end +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example4.eruby b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example4.eruby new file mode 100644 index 0000000..3550f5a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example4.eruby @@ -0,0 +1,3 @@ + +

    + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example4.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example4.rb new file mode 100644 index 0000000..e8d0d8d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example4.rb @@ -0,0 +1,11 @@ +require 'erubis' +input = File.read('example4.eruby') +eruby = Erubis::Eruby.new(input, :pattern=>'') + # or '<(?:!--)?% %(?:--)?>' + +puts "---------- script source ---" +puts eruby.src # print script source + +puts "---------- result ----------" +list = ['aaa', 'bbb', 'ccc'] +puts eruby.result(binding()) # get result diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example4.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example4.result new file mode 100644 index 0000000..bcd1e2a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example4.result @@ -0,0 +1,10 @@ +$ ruby example4.rb +---------- script source --- +_buf = ''; for item in list + _buf << '

    '; _buf << ( item ).to_s; _buf << '

    +'; end +_buf.to_s +---------- result ---------- +

    aaa

    +

    bbb

    +

    ccc

    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example4_x.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example4_x.result new file mode 100644 index 0000000..97edb2f --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example4_x.result @@ -0,0 +1,5 @@ +$ erubis -x -p '' example4.eruby +_buf = ''; for item in list + _buf << '

    '; _buf << ( item ).to_s; _buf << '

    +'; end +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example5.eruby b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example5.eruby new file mode 100644 index 0000000..e106fd9 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example5.eruby @@ -0,0 +1,6 @@ +<%= @val %> +
      + <% for item in @list %> +
    • <%= item %>
    • + <% end %> +
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example5.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example5.rb new file mode 100644 index 0000000..2ad042e --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example5.rb @@ -0,0 +1,16 @@ +require 'erubis' +input = File.read('example5.eruby') +eruby = Erubis::Eruby.new(input) # create Eruby object + +## create context object +## (key means var name, which may be string or symbol.) +context = { + :val => 'Erubis Example', + 'list' => ['aaa', 'bbb', 'ccc'], +} +## or +# context = Erubis::Context.new() +# context['val'] = 'Erubis Example' +# context[:list] = ['aaa', 'bbb', 'ccc'], + +puts eruby.evaluate(context) # get result diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example5.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example5.result new file mode 100644 index 0000000..836f6ce --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example5.result @@ -0,0 +1,7 @@ +$ ruby example5.rb +Erubis Example +
      +
    • aaa
    • +
    • bbb
    • +
    • ccc
    • +
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example6.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example6.rb new file mode 100644 index 0000000..f80719f --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example6.rb @@ -0,0 +1,12 @@ +class MyData + attr_accessor :val, :list +end + +## any object can be a context object +mydata = MyData.new +mydata.val = 'Erubis Example' +mydata.list = ['aaa', 'bbb', 'ccc'] + +require 'erubis' +eruby = Erubis::Eruby.new(File.read('example5.eruby')) +puts eruby.evaluate(mydata) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example6.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example6.result new file mode 100644 index 0000000..f482d0b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example6.result @@ -0,0 +1,7 @@ +$ ruby example6.rb +Erubis Example +
      +
    • aaa
    • +
    • bbb
    • +
    • ccc
    • +
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example7.eruby b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example7.eruby new file mode 100644 index 0000000..53f9ec8 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example7.eruby @@ -0,0 +1,8 @@ +

    <%= @title %>

    + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example71.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example71.result new file mode 100644 index 0000000..ab555b1 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example71.result @@ -0,0 +1,13 @@ +$ erubis -f context.yaml example7.eruby +

    Users List

    + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example72.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example72.result new file mode 100644 index 0000000..dfcafd3 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example72.result @@ -0,0 +1,13 @@ +$ erubis -f context.rb example7.eruby +

    Users List

    + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example8.eruby b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example8.eruby new file mode 100644 index 0000000..5ea6da8 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example8.eruby @@ -0,0 +1,6 @@ +

    <%= @title %>

    +
      +<% for item in @list %> +
    • <%= item %>
    • +<% end %> +
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example8_ruby.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example8_ruby.result new file mode 100644 index 0000000..bdfd23e --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example8_ruby.result @@ -0,0 +1,7 @@ +$ erubis -c '@title="Example"; @list=%w[AAA BBB CCC]' example8.eruby +

    Example

    +
      +
    • AAA
    • +
    • BBB
    • +
    • CCC
    • +
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example8_yaml.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example8_yaml.result new file mode 100644 index 0000000..739e42b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example8_yaml.result @@ -0,0 +1,7 @@ +$ erubis -c '{title: Example, list: [AAA, BBB, CCC]}' example8.eruby +

    Example

    +
      +
    • AAA
    • +
    • BBB
    • +
    • CCC
    • +
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example9.eruby b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example9.eruby new file mode 100644 index 0000000..0f2dc8f --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example9.eruby @@ -0,0 +1,3 @@ +<% for item in @list %> + <%= item %> +<% end %> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example9.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example9.rb new file mode 100644 index 0000000..bde1de6 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example9.rb @@ -0,0 +1,8 @@ +require 'erubis' +input = File.read('example9.eruby') +eruby1 = Erubis::Eruby.new(input) +eruby2 = Erubis::Eruby.new(input, :preamble=>false, :postamble=>false) + +puts eruby1.src # print preamble and postamble +puts "--------------" +puts eruby2.src # don't print preamble and postamble diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example9.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example9.result new file mode 100644 index 0000000..60e71e2 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example9.result @@ -0,0 +1,9 @@ +$ ruby example9.rb +_buf = ''; for item in @list + _buf << ' '; _buf << ( item ).to_s; _buf << ' +'; end +_buf.to_s +-------------- + for item in @list + _buf << ' '; _buf << ( item ).to_s; _buf << ' +'; end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example91.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example91.result new file mode 100644 index 0000000..fde06a8 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example91.result @@ -0,0 +1,5 @@ +$ erubis -x example9.eruby +_buf = ''; for item in @list + _buf << ' '; _buf << ( item ).to_s; _buf << ' +'; end +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example92.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example92.result new file mode 100644 index 0000000..0cff68d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example92.result @@ -0,0 +1,4 @@ +$ erubis -x -b example9.eruby + for item in @list + _buf << ' '; _buf << ( item ).to_s; _buf << ' +'; end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_c.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_c.result new file mode 100644 index 0000000..9d36897 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_c.result @@ -0,0 +1,32 @@ +$ erubis -l cpp example.ecpp +#line 1 "example.ecpp" + +#include +#include +#include + +int main(int argc, char *argv[]) +{ + std::stringstream _buf; + +_buf << "\n" + " \n" + "

    Hello "; _buf << (argv[0]); _buf << "!

    \n" + " \n" + " \n"; + for (int i = 1; i < argc; i++) { +_buf << " \n" + " \n" + " \n" + " \n"; + } +_buf << " \n" + "
    "; _buf << (i); _buf << ""; _buf << (argv[i]); _buf << "
    \n" + " \n" + "\n"; + + std::string output = _buf.str(); + std::cout << output; + return 0; +} + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_java.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_java.result new file mode 100644 index 0000000..70c10d2 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_java.result @@ -0,0 +1,56 @@ +$ erubis -b -l java example.ejava + +import java.util.*; + +public class Example { + private String user; + private String[] list; + public example(String user, String[] list) { + this.user = user; + this.list = list; + } + + public String view() { + StringBuffer _buf = new StringBuffer(); + +_buf.append("\n" + + " \n" + + "

    Hello "); _buf.append(user); _buf.append("!

    \n" + + " \n" + + " \n"); + for (int i = 0; i < list.length; i++) { +_buf.append(" \n" + + " \n" + + " \n" + + " \n"); + } +_buf.append(" \n" + + "
    "); _buf.append(i + 1); _buf.append(""); _buf.append(escape(list[i])); _buf.append("
    \n" + + " \n" + + "\n"); + + return _buf.toString(); + } + + public static void main(String[] args) { + String[] list = { "", "b&b", "\"ccc\"" }; + Example ex = Example.new("Erubis", list); + System.out.print(ex.view()); + } + + public static String escape(String s) { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < s.length(); i++) { + char ch = s.charAt(i); + switch (ch) { + case '<': sb.append("<"); break; + case '>': sb.append(">"); break; + case '&': sb.append("&"); break; + case '"': sb.append("""); break; + default: sb.append(ch); + } + } + return sb.toString(); + } +} + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_js.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_js.result new file mode 100644 index 0000000..f93f910 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_js.result @@ -0,0 +1,22 @@ +$ erubis -l js example.ejs +var _buf = []; + var user = 'Erubis'; + var list = ['', 'b&b', '"ccc"']; + +_buf.push("\n\ + \n\ +

    Hello "); _buf.push(user); _buf.push("!

    \n\ + \n\ + \n"); + var i; + for (i = 0; i < list.length; i++) { +_buf.push(" \n\ + \n\ + \n\ + \n"); + } +_buf.push(" \n\ +
    "); _buf.push(i + 1); _buf.push(""); _buf.push(list[i]); _buf.push("
    \n\ + \n\ +\n"); +document.write(_buf.join("")); diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_perl.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_perl.result new file mode 100644 index 0000000..3efbb73 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_perl.result @@ -0,0 +1,20 @@ +$ erubis -l perl example.eperl +use HTML::Entities; + my $user = 'Erubis'; + my @list = ('', 'b&b', '"ccc"'); + +print(' + +

    Hello '); print($user); print('!

    + +'); $i = 0; + for $item (@list) { +print(' + + + +'); } +print('
    '); print($i); print(''); print($item); print('
    + + +'); diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_php.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_php.result new file mode 100644 index 0000000..b9fa7d0 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_php.result @@ -0,0 +1,19 @@ +$ erubis -l php example.ephp +<?xml version="1.0"?> + + +

    Hello !

    + + + + + + + + + + + +
    + + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_scheme.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_scheme.result new file mode 100644 index 0000000..0bfb1e0 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_scheme.result @@ -0,0 +1,30 @@ +$ erubis -l scheme example.escheme +(let ((_buf '())) (define (_add x) (set! _buf (cons x _buf))) (_add " + \n") + +(let ((user "Erubis") + (items '("" "b&b" "\"ccc\"")) + (i 0)) + +(_add "

    Hello ")(_add user)(_add "!

    + \n") + + (for-each + (lambda (item) + (set! i (+ i 1)) + +(_add " + + + \n") + + ) ; lambda end + items) ; for-each end + +(_add "
    ")(_add i)(_add "")(_add item)(_add "
    \n") + +) ; let end + +(_add " +\n") + (reverse _buf)) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_scheme_display.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_scheme_display.result new file mode 100644 index 0000000..1481e51 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/example_scheme_display.result @@ -0,0 +1,29 @@ +$ erubis -l scheme --func=display example.escheme +(display " + \n") + +(let ((user "Erubis") + (items '("" "b&b" "\"ccc\"")) + (i 0)) + +(display "

    Hello ")(display user)(display "!

    + \n") + + (for-each + (lambda (item) + (set! i (+ i 1)) + +(display " + + + \n") + + ) ; lambda end + items) ; for-each end + +(display "
    ")(display i)(display "")(display item)(display "
    \n") + +) ; let end + +(display " +\n") diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby-example.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby-example.rb new file mode 100644 index 0000000..425ef0b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby-example.rb @@ -0,0 +1,8 @@ +require 'erubis' +input = File.read('example.eruby') + +puts "----- Erubis::Eruby -----" +print Erubis::Eruby.new(input).src + +puts "----- Erubis::FastEruby -----" +print Erubis::FastEruby.new(input).src diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby-example.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby-example.result new file mode 100644 index 0000000..40319f7 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby-example.result @@ -0,0 +1,18 @@ +$ ruby fasteruby-example.rb +----- Erubis::Eruby ----- +_buf = ''; _buf << '
    +'; for item in list + _buf << '

    '; _buf << ( item ).to_s; _buf << '

    +

    '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '

    +'; end + _buf << '
    +'; +_buf.to_s +----- Erubis::FastEruby ----- +_buf = ''; _buf << %Q`
    \n` + for item in list + _buf << %Q`

    #{ item }

    +

    #{Erubis::XmlHelper.escape_xml( item )}

    \n` + end + _buf << %Q`
    \n` +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby.rb new file mode 100644 index 0000000..e336147 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby.rb @@ -0,0 +1,11 @@ +require 'erubis' +input = File.read('fasteruby.rhtml') +eruby = Erubis::FastEruby.new(input) # create Eruby object + +puts "---------- script source ---" +puts eruby.src + +puts "---------- result ----------" +context = { :title=>'Example', :list=>['aaa', 'bbb', 'ccc'] } +output = eruby.evaluate(context) +print output diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby.result new file mode 100644 index 0000000..fa1cb58 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby.result @@ -0,0 +1,38 @@ +$ ruby fasteruby.rb +---------- script source --- +_buf = ''; _buf << %Q` + +

    #{Erubis::XmlHelper.escape_xml( @title )}

    + \n` + i = 0 + for item in @list + i += 1 + _buf << %Q` + + + \n` + end + _buf << %Q`
    #{ i }#{Erubis::XmlHelper.escape_xml( item )}
    + +\n` +_buf.to_s +---------- result ---------- + + +

    Example

    + + + + + + + + + + + + + +
    1aaa
    2bbb
    3ccc
    + + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby.rhtml b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby.rhtml new file mode 100644 index 0000000..9c526c4 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/fasteruby.rhtml @@ -0,0 +1,15 @@ + + +

    <%== @title %>

    + +<% i = 0 %> +<% for item in @list %> +<% i += 1 %> + + + + +<% end %> +
    <%= i %><%== item %>
    + + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter-example.eruby b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter-example.eruby new file mode 100644 index 0000000..e4708bb --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter-example.eruby @@ -0,0 +1,9 @@ + +<% for item in items %> + <%= item %> +<% end %> + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter-example2.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter-example2.rb new file mode 100644 index 0000000..5247296 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter-example2.rb @@ -0,0 +1,8 @@ +require 'erubis' +class HeaderFooterEruby < Erubis::Eruby + include Erubis::HeaderFooterEnhancer +end + +input = File.read('headerfooter-example2.rhtml') +eruby = HeaderFooterEruby.new(input) +print eruby.src diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter-example2.rhtml b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter-example2.rhtml new file mode 100644 index 0000000..520c037 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter-example2.rhtml @@ -0,0 +1,10 @@ + + + + : + + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter_example.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter_example.result new file mode 100644 index 0000000..58ab90d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter_example.result @@ -0,0 +1,11 @@ +$ erubis -xE HeaderFooter headerfooter-example.eruby + +def list_items(items) + +_buf = ''; for item in items + _buf << ' '; _buf << ( item ).to_s; _buf << ' +'; end +_buf.to_s + +end + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter_example2.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter_example2.result new file mode 100644 index 0000000..147fc54 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/headerfooter_example2.result @@ -0,0 +1,13 @@ +$ erubis -xE HeaderFooter headerfooter-example2.rhtml + +def page(list) + +_buf = ''; _buf << ' + +'; _buf << ' : +'; _buf << ' +'; +_buf.to_s + +end + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/interpolation_example.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/interpolation_example.result new file mode 100644 index 0000000..a96a685 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/interpolation_example.result @@ -0,0 +1,9 @@ +$ erubis -xE DeleteIndent example.eruby +_buf = ''; _buf << '
    +'; for item in list + _buf << '

    '; _buf << ( item ).to_s; _buf << '

    +

    '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '

    +'; end + _buf << '
    +'; +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/main_program1.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/main_program1.rb new file mode 100644 index 0000000..dd4d349 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/main_program1.rb @@ -0,0 +1,8 @@ +require 'erubis' +eruby = Erubis::Eruby.new(File.read('template1.rhtml')) +items = ['foo', 'bar', 'baz'] +x = 1 +## local variable 'x' and 'eruby' are passed to template as well as 'items'! +print eruby.result(binding()) +## local variable 'x' is changed unintendedly because it is changed in template! +puts "** debug: x=#{x.inspect}" #=> "baz" diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/main_program1.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/main_program1.result new file mode 100644 index 0000000..8e8c653 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/main_program1.result @@ -0,0 +1,6 @@ +$ ruby main_program1.rb +item = foo +item = bar +item = baz +** debug: local variables=["eruby", "items", "x", "_buf"] +** debug: x="baz" diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/main_program2.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/main_program2.rb new file mode 100644 index 0000000..0d5883b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/main_program2.rb @@ -0,0 +1,8 @@ +require 'erubis' +eruby = Erubis::Eruby.new(File.read('template2.rhtml')) +items = ['foo', 'bar', 'baz'] +x = 1 +## only 'items' are passed to template +print eruby.evaluate(:items=>items) +## local variable 'x' is not changed! +puts "** debug: x=#{x.inspect}" #=> 1 diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/main_program2.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/main_program2.result new file mode 100644 index 0000000..f95fa05 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/main_program2.result @@ -0,0 +1,6 @@ +$ ruby main_program2.rb +item = foo +item = bar +item = baz +** debug: local variables=["_context", "x", "_buf"] +** debug: x=1 diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/nocode-example.eruby b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/nocode-example.eruby new file mode 100644 index 0000000..f0ed27a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/nocode-example.eruby @@ -0,0 +1,14 @@ +

    List

    +<% if !@list || @list.empty? %> +

    not found.

    +<% else %> + + + <% @list.each_with_index do |item, i| %> + + + + <% end %> + +
    <%= item %>
    +<% end %> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/nocode-php.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/nocode-php.result new file mode 100644 index 0000000..f331243 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/nocode-php.result @@ -0,0 +1,20 @@ +$ erubis -l php --pi=php -N -E NoCode --trim=false notext-example.php + 1: + 2: + 3:

    List

    + 4: + 5:

    not found.

    + 6: + 7: + 8: + 9: + 10: + 11: + 12: + 13: + 14: + 15: + 16:
    + 17: + 18: + 19: diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/nocode_example.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/nocode_example.result new file mode 100644 index 0000000..c6c2601 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/nocode_example.result @@ -0,0 +1,15 @@ +$ erubis -xE NoCode notext-example.eruby +

    List

    + +

    not found.

    + + + + + + + + + +
    + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/normal-eruby-test.eruby b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/normal-eruby-test.eruby new file mode 100644 index 0000000..81bd711 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/normal-eruby-test.eruby @@ -0,0 +1,9 @@ +<% +def list_items(items) +%> +<% for item in items %> +
  • <%= item %>
  • +<% end %> +<% +end +%> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/normal_eruby_test.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/normal_eruby_test.result new file mode 100644 index 0000000..01016a7 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/normal_eruby_test.result @@ -0,0 +1,11 @@ +$ erubis -x normal-eruby-test.eruby +_buf = ''; +def list_items(items) + + for item in items + _buf << '
  • '; _buf << ( item ).to_s; _buf << '
  • +'; end + +end + +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/notext-example.eruby b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/notext-example.eruby new file mode 100644 index 0000000..f0ed27a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/notext-example.eruby @@ -0,0 +1,14 @@ +

    List

    +<% if !@list || @list.empty? %> +

    not found.

    +<% else %> + + + <% @list.each_with_index do |item, i| %> + + + + <% end %> + +
    <%= item %>
    +<% end %> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/notext-example.php b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/notext-example.php new file mode 100644 index 0000000..c40cb91 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/notext-example.php @@ -0,0 +1,19 @@ + + +

    List

    + +

    not found.

    + + + + + + + + + + +
    + + + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/notext-php.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/notext-php.result new file mode 100644 index 0000000..249e62c --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/notext-php.result @@ -0,0 +1,20 @@ +$ erubis -l php --pi=php -N -E NoText --trim=false notext-example.php + 1: + 2: + 3: + 4: + 5: + 6: + 7: + 8: + 9: + 10: + 11: + 12: + 13: + 14: + 15: + 16: + 17: + 18: + 19: diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/notext_example.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/notext_example.result new file mode 100644 index 0000000..dccbaca --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/notext_example.result @@ -0,0 +1,16 @@ +$ erubis -xE NoText notext-example.eruby +_buf = ''; + if !@list || @list.empty? + + else + + + @list.each_with_index do |item, i| + _buf << ( i%2 == 0 ? '#FFCCCC' : '#CCCCFF' ).to_s; + _buf << ( item ).to_s; + + end + + + end +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/percentline-example.rhtml b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/percentline-example.rhtml new file mode 100644 index 0000000..eac00ed --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/percentline-example.rhtml @@ -0,0 +1,6 @@ +
      +% for item in list +
    • <%= item %>
    • +% end +
    +%% lines with '%%' diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/percentline_example.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/percentline_example.result new file mode 100644 index 0000000..5d21eb4 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/percentline_example.result @@ -0,0 +1,9 @@ +$ erubis -xE PercentLine percentline-example.rhtml +_buf = ''; _buf << '
      +'; for item in list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • +'; end + _buf << '
    +% lines with \'%%\' +'; +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/prefixedline-example.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/prefixedline-example.rb new file mode 100644 index 0000000..20c19f7 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/prefixedline-example.rb @@ -0,0 +1,9 @@ +require 'erubis' + +class PrefixedLineEruby < Erubis::Eruby + include Erubis::PrefixedLineEnhancer +end + +input = File.read('prefixedline-example.rhtml') +eruby = PrefixedLineEruby.new(input, :prefixchar=>'!') # default '%' +print eruby.src diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/prefixedline-example.rhtml b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/prefixedline-example.rhtml new file mode 100644 index 0000000..a950df2 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/prefixedline-example.rhtml @@ -0,0 +1,6 @@ +
      + ! for item in list +
    • <%= item %>
    • + ! end +
    + !! lines with '!!' diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/prefixedline_example.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/prefixedline_example.result new file mode 100644 index 0000000..9741b8a --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/prefixedline_example.result @@ -0,0 +1,9 @@ +$ ruby prefixedline-example.rb +_buf = ''; _buf << '
      +'; for item in list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • +'; end + _buf << '
    + ! lines with \'!!\' +'; +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/printenable_example.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/printenable_example.result new file mode 100644 index 0000000..69fb91c --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/printenable_example.result @@ -0,0 +1,4 @@ +$ ruby printenabled-example.rb + aaa + bbb + ccc diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/printenabled-example.eruby b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/printenabled-example.eruby new file mode 100644 index 0000000..84b345f --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/printenabled-example.eruby @@ -0,0 +1,3 @@ +<% for item in @list %> + <% print item %> +<% end %> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/printenabled-example.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/printenabled-example.rb new file mode 100644 index 0000000..289964c --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/printenabled-example.rb @@ -0,0 +1,8 @@ +require 'erubis' +class PrintEnabledEruby < Erubis::Eruby + include Erubis::PrintEnabledEnhancer +end +input = File.read('printenabled-example.eruby') +eruby = PrintEnabledEruby.new(input) +list = ['aaa', 'bbb', 'ccc'] +print eruby.evaluate(:list=>list) diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/printstatement_example.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/printstatement_example.result new file mode 100644 index 0000000..49fcd81 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/printstatement_example.result @@ -0,0 +1,8 @@ +$ erubis -xE PrintOut example.eruby + print '
    +'; for item in list + print '

    '; print(( item ).to_s); print '

    +

    '; print Erubis::XmlHelper.escape_xml( item ); print '

    +'; end + print '
    +'; diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/simplify_example.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/simplify_example.result new file mode 100644 index 0000000..82022ce --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/simplify_example.result @@ -0,0 +1,9 @@ +$ erubis -xE Simplify example.eruby +_buf = ''; _buf << '
    +'; for item in list ; _buf << ' +

    '; _buf << ( item ).to_s; _buf << '

    +

    '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '

    +'; end ; _buf << ' +
    +'; +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/stdout_exmple.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/stdout_exmple.result new file mode 100644 index 0000000..c5a714d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/stdout_exmple.result @@ -0,0 +1,9 @@ +$ erubis -xE Stdout example.eruby +_buf = $stdout; _buf << '
    +'; for item in list + _buf << '

    '; _buf << ( item ).to_s; _buf << '

    +

    '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '

    +'; end + _buf << '
    +'; +'' diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/stringbuffer_example.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/stringbuffer_example.result new file mode 100644 index 0000000..75e9894 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/stringbuffer_example.result @@ -0,0 +1,9 @@ +$ erubis -xE StringBuffer example.eruby +_buf = ''; _buf << '
    +'; for item in list + _buf << '

    '; _buf << ( item ).to_s; _buf << '

    +

    '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '

    +'; end + _buf << '
    +'; +_buf.to_s diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/tail_260.result b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/tail_260.result new file mode 100644 index 0000000..7163bcd --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/tail_260.result @@ -0,0 +1,4 @@ +$ erubis -c '{var: "AAA\n"}' tailnewline.rhtml +
    +AAA +
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/tailnewline.rhtml b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/tailnewline.rhtml new file mode 100644 index 0000000..8674daa --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/tailnewline.rhtml @@ -0,0 +1,3 @@ +
    +<%= @var -%> +
    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/template1.rhtml b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/template1.rhtml new file mode 100644 index 0000000..2b88b6b --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/template1.rhtml @@ -0,0 +1,4 @@ +<% for x in items %> +item = <%= x %> +<% end %> +** debug: local variables=<%= local_variables().inspect() %> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/template2.rhtml b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/template2.rhtml new file mode 100644 index 0000000..f5df553 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/data/users-guide/template2.rhtml @@ -0,0 +1,4 @@ +<% for x in @items %> +item = <%= x %> +<% end %> +** debug: local variables=<%= local_variables().inspect() %> diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-engines.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-engines.rb new file mode 100644 index 0000000..3d61dfd --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-engines.rb @@ -0,0 +1,425 @@ +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +require "#{File.dirname(__FILE__)}/test.rb" + +require 'erubis' +require 'erubis/engine/eruby' +require 'erubis/engine/ephp' +require 'erubis/engine/ec' +require 'erubis/engine/ecpp' +require 'erubis/engine/ejava' +require 'erubis/engine/escheme' +require 'erubis/engine/eperl' +require 'erubis/engine/ejavascript' + + +class EnginesTest < Test::Unit::TestCase + + #load_yaml_documents(__FILE__) + testdata_list = load_yaml_datafile(__FILE__) + define_testmethods(testdata_list) + + def _test() + klass = Erubis.const_get(@class) + engine = klass.new(@input, @options || {}) + actual = engine.src + assert_text_equal(@expected, actual) + end + + + self.post_definition() + +end + +__END__ +- name: ruby1 + lang: ruby + class: Eruby + options: + input: | + + + <% i = 0 + list.each_with_index do |item, i| %> + + + + + <% end %> + +
    <%= i+1 %><%== list %>
    + <%=== i+1 %> + expected: | + _buf = ''; _buf << ' + + '; i = 0 + list.each_with_index do |item, i| + _buf << ' + + + + '; end + _buf << ' +
    '; _buf << ( i+1 ).to_s; _buf << ''; _buf << Erubis::XmlHelper.escape_xml( list ); _buf << '
    + '; $stderr.puts("*** debug: i+1=#{(i+1).inspect}"); _buf << ' + '; + _buf.to_s +## +- name: ruby2_options + lang: ruby + class: Eruby + options: { :bufvar: '@_out_buf' } + input: | + + <% for item in @items %> + + + + + <% end %> +
    <%= i+1 %><%== list %>
    + expected: | + @_out_buf = ''; @_out_buf << ' + '; for item in @items + @_out_buf << ' + + + + '; end + @_out_buf << '
    '; @_out_buf << ( i+1 ).to_s; @_out_buf << ''; @_out_buf << Erubis::XmlHelper.escape_xml( list ); @_out_buf << '
    + '; + @_out_buf.to_s +## +- name: php1 + lang: php + class: Ephp + options: + input: | + + + <% + $i = 0; + foreach ($list as $item) { + $i++; + %> + + + + + <% + } + %> + +
    <%= $i %><%== $item %>
    + <%=== $i %> + expected: | + + + + + + + + + +
    + +## +- name: c1 + lang: c + class: Ec + options: { :filename: foo.html, :indent: ' ' } + input: |4 + + + <% for (i = 0; i < list; i++) { %> + + + + + <% } %> + +
    <%= "%d", i %><%== list[i] %>
    + <%=== "%d", i %> + expected: | + #line 1 "foo.html" + fputs("\n" + " \n", stdout); + for (i = 0; i < list; i++) { + fputs(" \n" + " \n" + " \n" + " \n", stdout); + } + fputs(" \n" + "
    ", stdout); fprintf(stdout, "%d", i); fputs("", stdout); escape(list[i], stdout); fputs("
    \n", stdout); + fprintf(stderr, "*** debug: i=" "%d", i); fputs("\n", stdout); +## +- name: cpp1 + lang: cpp + class: Ecpp + options: { :filename: foo.html, :indent: ' ' } + input: |4 + + + <% for (i = 0; i < n; i++) { %> + + + + + <% } %> + +
    <%= i %><%== list[i] %>
    + <%=== i %> + expected: | + #line 1 "foo.html" + _buf << "\n" + " \n"; + for (i = 0; i < n; i++) { + _buf << " \n" + " \n" + " \n" + " \n"; + } + _buf << " \n" + "
    "; _buf << (i); _buf << ""; escape(list[i]); _buf << "
    \n"; + std::cerr << "*** debug: i=" << (i); _buf << "\n"; +## +- name: java1 + lang: java + class: Ejava + options: { :buf: _buf, :bufclass: StringBuilder, :indent: ' ' } + input: | + + + <% + int i = 0; + for (Iterator it = list.iterator(); it.hasNext(); ) { + String s = (String)it.next(); + i++; + %> + "> + + + + <% + } + %> + +
    <%= i %><%== s %>
    + <%=== i %> + expected: |4 + StringBuilder _buf = new StringBuilder(); _buf.append("\n" + + " \n"); + + int i = 0; + for (Iterator it = list.iterator(); it.hasNext(); ) { + String s = (String)it.next(); + i++; + + _buf.append(" \n" + + " \n" + + " \n" + + " \n"); + + } + + _buf.append(" \n" + + "
    "); _buf.append(i); _buf.append(""); _buf.append(escape(s)); _buf.append("
    \n"); + System.err.println("*** debug: i="+(i)); _buf.append("\n"); + return _buf.toString(); +## +- name: scheme1 + lang: scheme + class: Escheme + options: + input: &scheme1_input| + <% (let ((i 0)) %> + + + <% + (for-each + (lambda (item) + (set! i (+ i 1)) + %> + + + + + <% + ); lambda end + list); for-each end + %> + +
    <%= i %><%== item %>
    + <%=== i %> + <% ); let end %> + expected: |4 + (let ((_buf '())) (define (_add x) (set! _buf (cons x _buf))) (let ((i 0)) + (_add " + \n") + + (for-each + (lambda (item) + (set! i (+ i 1)) + + (_add " + + + \n") + + ); lambda end + list); for-each end + + (_add " +
    ")(_add i)(_add "")(_add (escape item))(_add "
    \n") + (display "*** debug: i=")(display i)(display "\n")(_add "\n") + ); let end + (reverse _buf)) + +## +- name: scheme2 + lang: scheme + class: Escheme + options: { :func: 'display' } + input: *scheme1_input + expected: |4 + (let ((i 0)) + (display " + \n") + + (for-each + (lambda (item) + (set! i (+ i 1)) + + (display " + + + \n") + + ); lambda end + list); for-each end + + (display " +
    ")(display i)(display "")(display (escape item))(display "
    \n") + (display "*** debug: i=")(display i)(display "\n")(display "\n") + ); let end +## +- name: perl1 + lang: perl + class: Eperl + options: + input: | + <% + my $user = 'Erubis'; + my @list = ('', 'b&b', '"ccc"'); + %> +

    Hello <%= $user %>!

    + + + <% $i = 0; %> + <% for $item (@list) { %> + "> + + + + <% } %> + +
    <%= $i %><%== $item %>
    + <%=== $i %> + expected: |4 + use HTML::Entities; + my $user = 'Erubis'; + my @list = ('', 'b&b', '"ccc"'); + + print('

    Hello '); print($user); print('!

    + + + '); $i = 0; + for $item (@list) { + print(' + + + + '); } + print(' +
    '); print($i); print(''); print(encode_entities($item)); print('
    + '); print('*** debug: $i=', $i, "\n");print(' + '); +## +- name: javascript1 + lang: javascript + class: Ejavascript + options: + input: &javascript_input | + <% + var user = 'Erubis'; + var list = ['', 'b&b', '"ccc"']; + %> +

    Hello <%= user %>!

    + + + <% var i; %> + <% for (i = 0; i < list.length; i++) { %> + "> + + + + <% } %> + +
    <%= i %><%= list[i] %>
    + <%=== i %> + expected: |4 + var _buf = []; + var user = 'Erubis'; + var list = ['', 'b&b', '"ccc"']; + + _buf.push("

    Hello "); _buf.push(user); _buf.push("!

    \n\ + \n\ + \n"); + var i; + for (i = 0; i < list.length; i++) { + _buf.push(" \n\ + \n\ + \n\ + \n"); + } + _buf.push(" \n\ +
    "); _buf.push(i); _buf.push(""); _buf.push(list[i]); _buf.push("
    \n"); + alert("*** debug: i="+(i)); _buf.push("\n"); + document.write(_buf.join("")); + ## +- name: javascript2 + lang: javascript + class: Ejavascript + options: { :docwrite: false } + input: *javascript_input + expected: |4 + var _buf = []; + var user = 'Erubis'; + var list = ['', 'b&b', '"ccc"']; + + _buf.push("

    Hello "); _buf.push(user); _buf.push("!

    \n\ + \n\ + \n"); + var i; + for (i = 0; i < list.length; i++) { + _buf.push(" \n\ + \n\ + \n\ + \n"); + } + _buf.push(" \n\ +
    "); _buf.push(i); _buf.push(""); _buf.push(list[i]); _buf.push("
    \n"); + alert("*** debug: i="+(i)); _buf.push("\n"); + _buf.join(""); + ## diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-enhancers.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-enhancers.rb new file mode 100644 index 0000000..fac9589 --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-enhancers.rb @@ -0,0 +1,646 @@ +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +require "#{File.dirname(__FILE__)}/test.rb" + +require 'stringio' + +require 'erubis' +require 'erubis/engine/enhanced' +require 'erubis/engine/optimized' + + +class EnhancersTest < Test::Unit::TestCase + + testdata_list = load_yaml_datafile(__FILE__) + define_testmethods(testdata_list) + + + def _test() + @src.gsub!(/\^/, ' ') + @output.gsub!(/\^/, ' ') if @output.is_a?(String) + if @class + k = Erubis + @class.split('::').each do |name| k = k.const_get(name) end + @klass = k + else + @klass = Erubis::Eruby + end + @options ||= {} + @chomp.each do |target| + case target + when 'src' ; @src.chomp! + when 'input' ; @input.chomp! + when 'expected' ; @expected.chomp! + else + raise "#{@name}: invalid chomp value: #{@chomp.inspect}" + end + end if @chomp + + if @testopt == 'load_file' + filename = "tmp.#{@name}.eruby" + begin + File.open(filename, 'w') { |f| f.write(@input) } + eruby = @klass.load_file(filename, @options) + ensure + cachename = filename + '.cache' + File.unlink(cachename) if test(?f, cachename) + File.unlink(filename) if test(?f, filename) + end + else + #if @klass == Erubis::TinyEruby + # eruby = @klass.new(@input) + #else + eruby = @klass.new(@input, @options) + #end + end + assert_text_equal(@src, eruby.src) + + return if @testopt == 'skip_output' + + list = ['', 'b&b', '"ccc"'] + context = @testopt == 'context' ? Erubis::Context.new : {} + context[:list] = list + + case @testopt + when /\Aeval\(/ + eval eruby.src + actual = eval @testopt + assert_text_equal(@output, actual) + when 'stdout', 'print' + begin + orig = $stdout + $stdout = stringio = StringIO.new + #actual = eruby.evaluate(context) + actual = eruby.result(context) + ensure + $stdout = orig + end + if @testopt == 'stdout' + assert_equal("", actual) + else + assert_nil(actual) + end + assert_text_equal(@output, stringio.string) + when 'evaluate', 'context' + actual = eruby.evaluate(context) + assert_text_equal(@output, actual) + when 'binding' + actual = eruby.result(binding()) + assert_text_equal(@output, actual) + else + actual = eruby.result(context) + assert_text_equal(@output, actual) + end + end + + + self.post_definition() + +end + +__END__ + +## +- name: basic1 + class: Eruby + input: &basic1_input| +
      + <% for item in list %> +
    • <%= item %>
    • + <% end %> +
    + src: &basic1_src| + _buf = ''; _buf << '
      + '; for item in list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end + _buf << '
    + '; + _buf.to_s + output: &basic1_output| +
      +
    • +
    • b&b
    • +
    • "ccc"
    • +
    + +- name: xml1 + class: XmlEruby + input: | +
    +       <% for item in list %>
    +        <%= item %>
    +        <%== item %>
    +       <% end %>
    +      
    + src: | + _buf = ''; _buf << '
    +      ';  for item in list 
    +       _buf << '  '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '
    +      '; _buf << '  '; _buf << ( item ).to_s; _buf << '
    +      ';  end 
    +       _buf << '
    + '; + _buf.to_s + output: | +
    +        <aaa>
    +        
    +        b&b
    +        b&b
    +        "ccc"
    +        "ccc"
    +      
    + +## +- name: xml2 + class: XmlEruby + testopt: skip_output + input: | + <% for item in list %> + <%= item["var#{n}"] %> + <%== item["var#{n}"] %> + <%=== item["var#{n}"] %> + <%==== item["var#{n}"] %> + <% end %> + src: | + _buf = ''; for item in list + _buf << ' '; _buf << Erubis::XmlHelper.escape_xml( item["var#{n}"] ); _buf << ' + '; _buf << ' '; _buf << ( item["var#{n}"] ).to_s; _buf << ' + '; _buf << ' '; $stderr.puts("*** debug: item[\"var\#{n}\"]=#{(item["var#{n}"]).inspect}"); _buf << ' + '; _buf << ' '; _buf << ' + '; end + _buf.to_s + output: | + +## +- name: printout1 + class: PrintOutEruby + testopt: print + input: *basic1_input + src: |4 + print '
      + '; for item in list + print '
    • '; print(( item ).to_s); print '
    • + '; end + print '
    + '; + output: *basic1_output + +## +- name: printenabled1 + class: PrintEnabledEruby + input: &printenabled1_input| +
      + <% for item in list %> +
    • <% print item %>
    • + <% end %> +
    + src: | + @_buf = _buf = ''; _buf << '
      + '; for item in list + _buf << '
    • '; print item ; _buf << '
    • + '; end + _buf << '
    + '; + _buf.to_s + output: *basic1_output +#
      +#
    • +#
    • b&b
    • +#
    • "ccc"
    • +#
    + +## +- name: stdout1 + class: StdoutEruby + testopt: stdout + input: *basic1_input +#
      +# <% for item in list %> +#
    • <%= item %>
    • +# <% end %> +#
    + src: | + _buf = $stdout; _buf << '
      + '; for item in list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end + _buf << '
    + '; + '' + output: *basic1_output +#
      +#
    • +#
    • b&b
    • +#
    • "ccc"
    • +#
    + +## +- name: array1 + class: ArrayEruby + input: | +
      + <% for item in list %> +
    • <%= item %>
    • + <% end %> +
    + src: | + _buf = []; _buf << '
      + '; for item in list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end + _buf << '
    + '; + _buf + output: + - "
      \n" + - "
    • " + - "" + - "
    • \n" + - "
    • " + - "b&b" + - "
    • \n" + - "
    • " + - "\"ccc\"" + - "
    • \n" + - "
    \n" + +## +- name: arraybuffer1 + class: ArrayBufferEruby + input: *basic1_input + src: | + _buf = []; _buf << '
      + '; for item in list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end + _buf << '
    + '; + _buf.join + output: *basic1_output + +- name: stringbuffer1 + class: StringBufferEruby + input: *basic1_input +#
      +# <% for item in list %> +#
    • <%= item %>
    • +# <% end %> +#
    + src: | + _buf = ''; _buf << '
      + '; for item in list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end + _buf << '
    + '; + _buf.to_s + output: *basic1_output +#
      +#
    • +#
    • b&b
    • +#
    • "ccc"
    • +#
    + +## +- name: erbout1 + class: ErboutEruby + input: *basic1_input + src: | + _erbout = _buf = ''; _buf << '
      + '; for item in list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end + _buf << '
    + '; + _buf.to_s + output: *basic1_output + +## +- name: stringio1 + class: StringIOEruby + input: *basic1_input + src: | + _buf = StringIO.new; _buf << '
      + '; for item in list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end + _buf << '
    + '; + _buf.string + output: *basic1_output + +## +- name: notext1 + class: NoTextEruby + input: *basic1_input + src: | + _buf = ''; + for item in list + _buf << ( item ).to_s; + end + + _buf.to_s + output: 'b&b"ccc"' + + +## +- name: nocode1 + class: NoCodeEruby + testopt: skip_output + input: *basic1_input + src: | +
      + +
    • + +
    + output: + +## +- name: simplified + class: SimplifiedEruby + input: | +
      + <% for item in list %> +
    • + <%= item %> +
    • + <% end %> +
    + src: | + _buf = ''; _buf << '
      + '; for item in list ; _buf << ' +
    • + '; _buf << ( item ).to_s; _buf << ' +
    • + '; end ; _buf << ' +
    + '; + _buf.to_s + output: | +
      + ^ +
    • + +
    • + ^ +
    • + b&b +
    • + ^ +
    • + "ccc" +
    • + ^ +
    + +## +- name: bipattern1 + class: BiPatternEruby + #options: { :bipattern : '\[= =\]' } + input: | + <% for item in list %> + <%= item %> % <%== item %> + [= item =] = [== item =] + <% end %> + src: | + _buf = ''; for item in list + _buf << ' '; _buf << ( item ).to_s; _buf << ' % '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << ' + '; _buf << ' '; _buf << ( item ).to_s; _buf << ' = '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << ' + '; end + _buf.to_s + output: |4 + % <aaa> + = <aaa> + b&b % b&b + b&b = b&b + "ccc" % "ccc" + "ccc" = "ccc" + +## +- name: bipattern2 + class: BiPatternEruby + options: { :bipattern: '\$\{ \}' } + input: | + <% for item in list %> + <%=item%> % <%==item%> + ${item} = ${=item} + <% end %> + src: | + _buf = ''; for item in list + _buf << ' '; _buf << (item).to_s; _buf << ' % '; _buf << Erubis::XmlHelper.escape_xml(item); _buf << ' + '; _buf << ' '; _buf << (item).to_s; _buf << ' = '; _buf << Erubis::XmlHelper.escape_xml(item); _buf << ' + '; end + _buf.to_s + output: |4 + % <aaa> + = <aaa> + b&b % b&b + b&b = b&b + "ccc" % "ccc" + "ccc" = "ccc" + +## +- name: percentline1 + class: PercentLineEruby + options: + input: | + + % for item in list + + + + + % end +
    <%= item %><%== item %>
    +
    +      %% double percent
    +       % spaced percent
    +      
    + src: | + _buf = ''; _buf << ' + '; for item in list + _buf << ' + + + + '; end + _buf << '
    '; _buf << ( item ).to_s; _buf << ''; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '
    +
    +      % double percent
    +       % spaced percent
    +      
    + '; + _buf.to_s + output: | + + + + + + + + + + + + + +
    <aaa>
    b&bb&b
    "ccc""ccc"
    +
    +      % double percent
    +       % spaced percent
    +      
    + +## +- name: prefixedline1 + class: PrefixedLineEruby + options: { :prefixchar: '!' } + input: | + + ! for item in list + + + + + ! end +
    <%= item %><%== item %>
    +
    +        !! doubled characters
    +      
    + src: | + _buf = ''; _buf << ' + '; for item in list + _buf << ' + + + + '; end + _buf << '
    '; _buf << ( item ).to_s; _buf << ''; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '
    +
    +        ! doubled characters
    +      
    + '; + _buf.to_s + output: | + + + + + + + + + + + + + +
    <aaa>
    b&bb&b
    "ccc""ccc"
    +
    +        ! doubled characters
    +      
    + +## +- name: headerfooter1 + class: HeaderFooterEruby + options: + testopt: eval('ordered_list(list)') + input: | + +
      + <% for item in list %> +
    1. <%==item%>
    2. + <% end %> +
    + + src: |4 + + def ordered_list(list) + + _buf = ''; _buf << '
      + '; for item in list + _buf << '
    1. '; _buf << Erubis::XmlHelper.escape_xml(item); _buf << '
    2. + '; end + _buf << '
    + '; + _buf.to_s + end + output: | +
      +
    1. <aaa>
    2. +
    3. b&b
    4. +
    5. "ccc"
    6. +
    + +## +- name: deleteindent1 + class: DeleteIndentEruby + options: + testopt: + input: *basic1_input + src: | + _buf = ''; _buf << '
      + '; for item in list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end + _buf << '
    + '; + _buf.to_s + output: | +
      +
    • +
    • b&b
    • +
    • "ccc"
    • +
    + +## +- name: interpolation1 + class: InterpolationEruby + options: + testopt: + input: *basic1_input + src: | + _buf = ''; _buf << %Q`
      \n` + for item in list + _buf << %Q`
    • #{ item }
    • \n` + end + _buf << %Q`
    \n` + _buf.to_s + output: *basic1_output + +- name: interpolation2 + desc: sharp, back-quote, and backslash should be escaped, but other quotes should not be escaped (reported by andrewj) + class: InterpolationEruby + options: + testopt: + input: | +

    `back-quote`

    +

    <%= `echo back-tick operator` %>

    +

    #{sharp}

    +

    'single quote'

    +

    "double quote"

    +

    backslash\n\t

    + src: | + _buf = ''; _buf << %Q`

    \`back-quote\`

    +

    #{ `echo back-tick operator` }

    +

    \#{sharp}

    +

    'single quote'

    +

    "double quote"

    +

    backslash\\n\\t

    \n` + _buf.to_s + output: | +

    `back-quote`

    +

    back-tick operator +

    +

    #{sharp}

    +

    'single quote'

    +

    "double quote"

    +

    backslash\n\t

    diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-erubis.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-erubis.rb new file mode 100644 index 0000000..39f300e --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-erubis.rb @@ -0,0 +1,887 @@ +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +require "#{File.dirname(__FILE__)}/test.rb" + +require 'stringio' + +require 'erubis' +require 'erubis/engine/enhanced' +require 'erubis/engine/optimized' +require 'erubis/tiny' + + +class ErubisTest < Test::Unit::TestCase + + testdata_list = load_yaml_datafile(__FILE__) + define_testmethods(testdata_list) + + + def _test() + @src.gsub!(/\^/, ' ') + @output.gsub!(/\^/, ' ') if @output.is_a?(String) + if @class + k = Erubis + @class.split('::').each do |name| k = k.const_get(name) end + @klass = k + else + @klass = Erubis::Eruby + end + @options ||= {} + @chomp.each do |target| + case target + when 'src' ; @src.chomp! + when 'input' ; @input.chomp! + when 'expected' ; @expected.chomp! + else + raise "#{@name}: invalid chomp value: #{@chomp.inspect}" + end + end if @chomp + + if @testopt == 'load_file' + filename = "tmp.#{@name}.eruby" + begin + File.open(filename, 'w') { |f| f.write(@input) } + eruby = @klass.load_file(filename, @options) + ensure + cachename = filename + '.cache' + File.unlink(cachename) if test(?f, cachename) + File.unlink(filename) if test(?f, filename) + end + else + if @klass == Erubis::TinyEruby + eruby = @klass.new(@input) + else + eruby = @klass.new(@input, @options) + end + end + assert_text_equal(@src, eruby.src) + + return if @testopt == 'skip_output' + + list = ['', 'b&b', '"ccc"'] + context = @testopt == 'context' ? Erubis::Context.new : {} + context[:list] = list + + case @testopt + when /\Aeval\(/ + eval eruby.src + actual = eval @testopt + assert_text_equal(@output, actual) + when 'stdout', 'print' + begin + orig = $stdout + $stdout = stringio = StringIO.new + #actual = eruby.evaluate(context) + actual = eruby.result(context) + ensure + $stdout = orig + end + if @testopt == 'stdout' + assert_equal("", actual) + else + assert_nil(actual) + end + assert_text_equal(@output, stringio.string) + when 'evaluate', 'context' + actual = eruby.evaluate(context) + assert_text_equal(@output, actual) + when 'binding' + actual = eruby.result(binding()) + assert_text_equal(@output, actual) + else + actual = eruby.result(context) + assert_text_equal(@output, actual) + end + end + + + def test_load_file_cache1 + @input = < +<% for item in @list %> +
  • <%= item %>
  • +<% end %> + +END + @src = < +'; for item in @list + _buf << '
  • '; _buf << ( item ).to_s; _buf << '
  • +'; end + _buf << ' +'; +_buf.to_s +END + @klass = Erubis::Eruby + filename = 'tmp.load_file_timestamp1' + cachename = filename + '.cache' + begin + ## when cache doesn't exist then it is created automatically + File.open(filename, 'w') { |f| f.write(@input) } + mtime = Time.now - 2.0 + File.utime(mtime, mtime, filename) + !test(?f, cachename) or raise "** failed" + engine = @klass.load_file(filename) + assert_block() { test(?f, cachename) } + assert_block() { File.mtime(filename) <= File.mtime(cachename) } + assert_text_equal(@src, engine.src) + ## when cache has different timestamp then it is recreated + input2 = @input.gsub(/ul>/, 'ol>') + src2 = @src.gsub(/ul>/, 'ol>') + File.open(filename, 'w') { |f| f.write(input2) } + t1 = Time.now() + sleep(1) + t2 = Time.now() + # + File.utime(t1, t1, filename) + File.utime(t2, t2, cachename) + File.mtime(filename) < File.mtime(cachename) or raise "** failed" + engine = @klass.load_file(filename) + assert_block('cache should have same timestamp') { File.mtime(filename) == File.mtime(cachename) } + #assert_text_equal(@src, engine.src) + assert_text_equal(src2, engine.src) + # + File.utime(t2, t2, filename) + File.utime(t1, t1, cachename) + File.mtime(filename) > File.mtime(cachename) or raise "** failed" + engine = @klass.load_file(filename) + assert_block('cache should have same timestamp') { File.mtime(filename) == File.mtime(cachename) } + assert_text_equal(src2, engine.src) + ensure + File.unlink(cachename) if File.file?(cachename) + File.unlink(filename) if File.file?(filename) + end + end + + + class Dummy + end + + def _class_has_instance_method(klass, method) + return klass.instance_methods.collect{|m| m.to_s}.include?(method.to_s) + end + + def test_def_method1 + s = "<%for i in list%>i=<%=i%>\n<%end%>" + eruby = Erubis::Eruby.new(s) + assert(! _class_has_instance_method(Dummy, 'render')) + eruby.def_method(Dummy, 'render(list)', 'foo.rhtml') + assert(_class_has_instance_method(Dummy, 'render')) + actual = Dummy.new().render(%w[1 2 3]) + assert_equal("i=1\ni=2\ni=3\n", actual) + end + + def test_def_method2 + s = "<%for i in list%>i=<%=i%>\n<%end%>" + eruby = Erubis::Eruby.new(s) + assert(! (eruby.respond_to? :render)) + eruby.def_method(eruby, 'render(list)', 'foo.rhtml') + assert eruby.respond_to?(:render) + actual = eruby.render([1, 2, 3]) + assert_equal("i=1\ni=2\ni=3\n", actual) + assert(! _class_has_instance_method(eruby.class, 'render')) + end + + def test_evaluate_creates_proc + s = "hello <%= @name %>" + eruby = Erubis::Eruby.new(s) + assert_nil(eruby.instance_variable_get('@_proc')) + actual1 = eruby.evaluate(:name=>'world') + assert_not_nil(eruby.instance_variable_get('@_proc')) + assert_instance_of(Proc, eruby.instance_variable_get('@_proc')) + actual2 = eruby.evaluate(:name=>'world') + assert_equal(actual1, actual2) + # convert() must clear @_proc + eruby.convert(s) + assert_nil(eruby.instance_variable_get('@_proc')) + end + + #def test_toplevel_binding + # s = "locals = <%= local_variables().inspect %>\n<% x = 50 %>\n" + # eruby = Erubis::Eruby.new(s) + # _x = eval 'x', TOPLEVEL_BINDING + # _y = eval 'y', TOPLEVEL_BINDING + # actual = eruby.evaluate(:x=>_x, :y=>_y) + # _x = eval 'x', TOPLEVEL_BINDING + # _y = eval 'y', TOPLEVEL_BINDING + # puts "*** actual=#{actual.inspect}, x=#{_x.inspect}, y=#{_y.inspect}" + #end + + self.post_definition() + +end + +x = 10 +y = 20 + + +__END__ +- name: basic1 + input: &basic1_input| +
      + <% for item in list %> +
    • <%= item %>
    • + <% end %> +
    + src: &basic1_src| + _buf = ''; _buf << '
      + '; for item in list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end + _buf << '
    + '; + _buf.to_s + output: &basic1_output| +
      +
    • +
    • b&b
    • +
    • "ccc"
    • +
    + +## +- name: basic2 + input: | +
      + <% i = 0 + for item in list + i += 1 + %> +
    • <%= item %>
    • + <% end %> +
    + src: | + _buf = ''; _buf << '
      + '; i = 0 + for item in list + i += 1 + ^^^ + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end + _buf << '
    + '; + _buf.to_s + output: *basic1_output +#
      +#
    • +#
    • b&b
    • +#
    • "ccc"
    • +#
    + +## +- name: basic3 + input: | +
      <% i = 0 + for item in list + i += 1 %>
    • <%= item %>
    • <% end %> +
    + src: | + _buf = ''; _buf << '
      '; i = 0 + for item in list + i += 1 ; _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • '; end ; _buf << ' + '; _buf << '
    + '; + _buf.to_s + output: | +
    • b&b
    • "ccc"
    • +
    + +## +- name: context1 + testopt: context + input: | +
      + <% for item in @list %> +
    • <%= item %>
    • + <% end %> +
    + src: | + _buf = ''; _buf << '
      + '; for item in @list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end + _buf << '
    + '; + _buf.to_s + output: *basic1_output + +## +- name: ignore1 + input: | +
      + <%# i = 0 %> + <% for item in list %> + <%# + i += 1 + color = i % 2 == 0 ? '#FFCCCC' : '#CCCCFF' + %> +
    • <%#= i %> : <%= item %>
    • + <% end %> +
    + src: | + _buf = ''; _buf << '
      + '; + for item in list + + + + + _buf << '
    • ';; _buf << ' : '; _buf << ( item ).to_s; _buf << '
    • + '; end + _buf << '
    + '; + _buf.to_s + output: | +
      +
    • :
    • +
    • : b&b
    • +
    • : "ccc"
    • +
    + +## +- name: quotation1 + desc: single quotation and backslash + class: Eruby + input: "ation1_input| + a = "'" + b = "\"" + c = '\'' + src: | + _buf = ''; _buf << 'a = "\'" + b = "\\"" + c = \'\\\'\' + '; + _buf.to_s + output: *quotation1_input + +## +- name: minus1 + desc: '<%- -%>' + class: Eruby + input: | +
      + <%- for item in list -%> +
    • <%= item -%>
    • + <% end -%> +
    + src: *basic1_src + output: *basic1_output + +## +- name: pattern1 + options: + :pattern : '\[@ @\]' + input: | +
      + [@ for item in list @] +
    • [@= item @]
    • + [@ end @] +
    + src: | + _buf = ''; _buf << '
      + '; for item in list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end + _buf << '
    + '; + _buf.to_s + output: *basic1_output +#
      +#
    • +#
    • b&b
    • +#
    • "ccc"
    • +#
    + +## +- name: pattern2 + options: + :pattern : '<(?:!--)?% %(?:--)?>' + input: | +
      + +
    • <%= item %>
    • + +
    + src: | + _buf = ''; _buf << '
      + '; for item in list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end + _buf << '
    + '; + _buf.to_s + output: *basic1_output +#
      +#
    • +#
    • b&b
    • +#
    • "ccc"
    • +#
    + +## +- name: trim1 + options: + :trim : false + input: *basic1_input +#
      +# <% for item in list %> +#
    • <%= item %>
    • +# <% end %> +#
    + src: | + _buf = ''; _buf << '
      + '; _buf << ' '; for item in list ; _buf << ' + '; _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • + '; _buf << ' '; end ; _buf << ' + '; _buf << '
    + '; + _buf.to_s + output: | +
      + ^ +
    • + ^ +
    • b&b
    • + ^ +
    • "ccc"
    • + ^ +
    + +## +- name: bodyonly1 + testopt: skip_output + options: { :preamble: no, :postamble: no } + input: *basic1_input + src: |4 + _buf << '
      + '; for item in list + _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end + _buf << '
    + '; + chomp: [src] + expected: null + +## +- name: loadfile1 + testopt: load_file + #input: | + #
      + # <% for item in list %> + #
    • <%= item %>
    • + # <% end %> + #
    + input: + "
      \r\n <% for item in list %>\r\n
    • <%= item %>
    • \r\n <% end %>\r\n
    \r\n" + #src: | + # _buf = ''; _buf << "
      \n" + # for item in list + # _buf << "
    • "; _buf << ( item ).to_s; _buf << "
    • \n" + # end + # _buf << "
    \n" + # _buf + src: + "_buf = ''; _buf << '
      \r\n'; for item in list \r\n _buf << '
    • '; _buf << ( item ).to_s; _buf << '
    • \r\n'; end \r\n _buf << '
    \r\n';\n_buf.to_s\n" + #output: | + #
      + #
    • + #
    • b&b
    • + #
    • "ccc"
    • + #
    + output: + "
      \n
    • \n
    • b&b
    • \n
    • \"ccc\"
    • \n
    \n" + # "
      \r\n
    • \r\n
    • b&b
    • \r\n
    • \"ccc\"
    • \r\n
    \r\n" + +## +- name: nomatch1 + desc: bug + input: &nomatch1| +
      +
    • foo
    • +
    + src: | + _buf = ''; _buf << '
      +
    • foo
    • +
    + '; + _buf.to_s + output: *nomatch1 + +## +- name: escape1 + options: { :escape: true } + input: | + <% str = '<>&"' %> + <%= str %> + <%== str %> + src: | + _buf = ''; str = '<>&"' + _buf << Erubis::XmlHelper.escape_xml( str ); _buf << ' + '; _buf << ( str ).to_s; _buf << ' + '; + _buf.to_s + output: | + <>&" + <>&" + +## +- name: tailch1 + options: + input: | +

    + <% str = '<>&"' %> + <%= str %> + <%= str =%> + <%= str -%> +

    + src: | + _buf = ''; _buf << '

    + '; str = '<>&"' + _buf << ' '; _buf << ( str ).to_s; _buf << ' + '; _buf << ' '; _buf << ( str ).to_s; _buf << ' '; _buf << ( str ).to_s; _buf << '

    + '; + _buf.to_s + output: | +

    + <>&" + <>&" <>&"

    + +## +- name: doublepercent1 + options: + input: | + <% x1 = 10 %> + <%% x2 = 20 %> + <%= x1 %> + <%%= x2 %> + src: | + _buf = ''; x1 = 10 + _buf << '<% x2 = 20 %> + '; _buf << ( x1 ).to_s; _buf << ' + '; _buf << '<%= x2 %> + '; + _buf.to_s + output: | + <% x2 = 20 %> + 10 + <%= x2 %> + +## +- name: optimized1 + class: OptimizedEruby + input: &optimized1_input| + + <% for item in list %> + + + + + <% end %> +
    <%= item %><%== item %>
    +
      <% for item in list %>
    • <%= item %>
    • <% end %>
    + src: | + _buf = ' + '; for item in list + _buf << ' + + + + '; end + _buf << '
    ' << ( item ).to_s << '' << Erubis::XmlHelper.escape_xml( item ) << '
    +
      '; for item in list ; _buf << '
    • ' << ( item ).to_s << '
    • '; end ; _buf << '
    + ' + _buf + output: | + + + + + + + + + + + + + +
    <aaa>
    b&bb&b
    "ccc""ccc"
    +
    • b&b
    • "ccc"
    + +## +- name: optimized2 + class: OptimizedXmlEruby + input: *optimized1_input +# +# <% for item in list %> +# +# +# +# +# <% end %> +#
    <%= item %><%== item %>
    +#
      <% for item in list %>
    • <%= item %>
    • <% end %>
    + src: | + _buf = ' + '; for item in list + _buf << ' + + + + '; end + _buf << '
    ' << Erubis::XmlHelper.escape_xml( item ) << '' << ( item ).to_s << '
    +
      '; for item in list ; _buf << '
    • ' << Erubis::XmlHelper.escape_xml( item ) << '
    • '; end ; _buf << '
    + ' + _buf + output: | + + + + + + + + + + + + + +
    <aaa>
    b&bb&b
    "ccc""ccc"
    +
    • <aaa>
    • b&b
    • "ccc"
    + +## +- name: optimized3 + desc: bug + class: OptimizedEruby + input: | + user = <%= "Foo" %> + <% for item in list %> + <%= item %> + <% end %> + src: | + _buf = 'user = '; _buf << ( "Foo" ).to_s << ' + '; for item in list + _buf << ' ' << ( item ).to_s << ' + '; end + + _buf + output: | + user = Foo + + b&b + "ccc" + +## +- name: optimized4 + desc: single quotation and backslash + class: OptimizedEruby + input: &optimized4_input| + a = "'" + b = "\"" + c = '\'' + src: | + _buf = 'a = "\'" + b = "\\"" + c = \'\\\'\' + '; + _buf + output: *optimized4_input + +## +- name: tiny1 + class: TinyEruby + testopt: binding + input: | +
      + <% for item in list %> +
    • <%= item %>
    • + <% end %> +
    + src: | + _buf = ''; _buf << '
      + '; for item in list ; _buf << ' +
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end ; _buf << ' +
    + '; + _buf.to_s + output: | +
      + ^ +
    • + ^ +
    • b&b
    • + ^ +
    • "ccc"
    • + ^ +
    + +## +- name: tiny2 + class: TinyEruby + testopt: evaluate + input: | +
      + <% for item in @list %> +
    • <%= item %>
    • + <% end %> +
    + src: | + _buf = ''; _buf << '
      + '; for item in @list ; _buf << ' +
    • '; _buf << ( item ).to_s; _buf << '
    • + '; end ; _buf << ' +
    + '; + _buf.to_s + output: | +
      + ^ +
    • + ^ +
    • b&b
    • + ^ +
    • "ccc"
    • + ^ +
    + +## +- name: pi1 + class: PI::Eruby + testopt: evaluate + input: &input_pi1| +
      + +
    • @{item}@ / @!{item}@
    • +
    • <%= item %> / <%== item %>
    • + +
    + src: &src_pi1| + _buf = ''; _buf << '
      + '; for item in @list + _buf << '
    • '; _buf << Erubis::XmlHelper.escape_xml(item); _buf << ' / '; _buf << (item).to_s; _buf << '
    • +
    • '; _buf << ( item ).to_s; _buf << ' / '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '
    • + '; end + _buf << '
    + '; + _buf.to_s + output: &output_pi1| +
      +
    • <aaa> /
    • +
    • / <aaa>
    • +
    • b&b / b&b
    • +
    • b&b / b&b
    • +
    • "ccc" / "ccc"
    • +
    • "ccc" / "ccc"
    • +
    + +## +- name: pi2 + class: PI::Eruby + options: { :escape: false } + testopt: evaluate + input: *input_pi1 + src: | + _buf = ''; _buf << '
      + '; for item in @list + _buf << '
    • '; _buf << (item).to_s; _buf << ' / '; _buf << Erubis::XmlHelper.escape_xml(item); _buf << '
    • +
    • '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << ' / '; _buf << ( item ).to_s; _buf << '
    • + '; end + _buf << '
    + '; + _buf.to_s + output: | +
      +
    • / <aaa>
    • +
    • <aaa> /
    • +
    • b&b / b&b
    • +
    • b&b / b&b
    • +
    • "ccc" / "ccc"
    • +
    • "ccc" / "ccc"
    • +
    + +## +- name: pi3 + class: PI::Eruby + options: { :pi: hoge, :embchar: '$' } + testopt: evaluate + input: | +
      + +
    • ${item}$ / $!{item}$
    • +
    • <%= item %> / <%== item %>
    • + +
    + src: *src_pi1 + output: *output_pi1 + +- name: pi4 + class: PI::Eruby + testopt: evaluate + input: | + +
      + + + + +
    + + + src: |4 + + def show(list) + + _buf = ''; _buf << '
      + '; for item in list + _buf << ( item + ).to_s; end + + + + + _buf << '
    + '; + _buf.to_s + + end + show(@list) + + output: | +
      + b&b"ccc"
    + + +- name: pitiny1 + class: PI::TinyEruby + testopt: evaluate + input: | +
      + +
    • @{item}@ / @!{item}@
    • + +
    + src: | + _buf = ''; _buf << '
      + '; for item in @list + _buf << '
    • '; _buf << Erubis::XmlHelper.escape_xml(item); _buf << ' / '; _buf << (item).to_s; _buf << '
    • + '; end + _buf << '
    + '; + _buf.to_s + output: | +
      +
    • <aaa> /
    • +
    • b&b / b&b
    • +
    • "ccc" / "ccc"
    • +
    + diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-index-cgi.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-index-cgi.rb new file mode 100644 index 0000000..bf364bd --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-index-cgi.rb @@ -0,0 +1,191 @@ +## +## $Release: 2.7.0 $ +## copyright(c) 2006-2011 kuwata-lab.com all rights reserved. +## + +require "#{File.dirname(__FILE__)}/test.rb" + +require 'stringio' + +load "#{File.dirname(__FILE__)}/../public_html/index.cgi" + + +def spec(desc) + yield +end + + +def dummy_env(request_method='GET', request_uri='/', opts={}) + if request_method.is_a?(Hash) + opts = request_method + request_method = 'GET' + request_uri = '/' + elsif request_uri.is_a?(Hash) + opts = request_uri + request_uri = '/' + end + env = { + 'REQUEST_METHOD' => request_method.to_s, + 'REQUEST_URI' => request_uri.to_s, + 'DOCUMENT_ROOT' => Dir.pwd, + } + opts.each {|k, v| env[k.to_s.upcase] = v } + env.update(opts) + return env +end + + +def dummy_template(filename, content) + begin + File.open(filename, 'wb') {|f| f.write(content) } + return yield + ensure + [filename, filename + '.cache'].each do |fname| + File.unlink(fname) if File.exist?(fname) + end + end +end + + +class ErubisHandlerTest < Test::Unit::TestCase + + def test_initialize + + spec "sets @encoding and @layout" do + encoding_bkup = $ENCODING + layout_bkup = $LAYOUT + begin + $ENCODING = 'cp932' + $LAYOUT = 'site.rhtml' + obj = ErubisHandler.new + assert_equal 'cp932', obj.encoding + assert_equal 'site.rhtml', obj.layout + ensure + $ENCODING = encoding_bkup + $LAYOUT = layout_bkup + end + end + + end + + def test_handle + + spec "renders requested template file." do + base = "_test_handle" + env = dummy_env('GET', "/#{base}.html") + handler = ErubisHandler.new + input = <<'END' +

    <%= 'SOS' %>

    +
      + <% for item in %w[Haruhi Mikuru Yuki] %> +
    • <%= item %>
    • + <% end %> +
    +END + expected = <<'END' +

    SOS

    +
      +
    • Haruhi
    • +
    • Mikuru
    • +
    • Yuki
    • +
    +END + out = dummy_template("#{base}.rhtml", input) do + handler.handle(env) + end + assert_equal expected, out + end + + spec "raises 404 error when requested file not found." do + req_url = "/_test_handle.html" + env = dummy_env('GET', req_url) + handler = ErubisHandler.new + ex = assert_raise HttpError do + handler.handle(env) + end + assert_equal 404, ex.status + assert_equal "#{req_url}: not found.", ex.message + end + + end + +end + + +class ErubisApplicationTest < Test::Unit::TestCase + + def test_handle_request + + spec "handles request by handler object and returns response data." do + app = ErubisApplication.new() + def app.get_handler + return Class.new { + def handle(env); "

    Hello SOS

    "; end + def encoding; "euc_jp"; end + }.new + end + expected = [ + 200, + [["Content-Type", "text/html;charset=euc_jp"]], + ["

    Hello SOS

    "], + ] + env = dummy_env('GET', '/') + ret = app.call(env) + assert_equal expected, ret + end + + end + + def test_handle_http_error + + spec "renders error page." do + req_path = '/HaruhiSuzumiya.html' + app = ErubisApplication.new() + env = dummy_env('GET', req_path) + expected = [ + 404, + [["Content-Type", "text/html"]], + ["

    404 Not Found

    \n

    #{req_path}: not found.

    \n"], + ] + ret = app.call(env) + assert_equal expected, ret + end + + end + + def test_run + + spec "prints to $stdout" do + input = "

    Hello SOS

    " + app = ErubisApplication.new + base = "SOS" + env = dummy_env("GET", "/#{base}.html") + sio = StringIO.new + output = dummy_template("#{base}.rhtml", input) do + app.run(env, sio) + sio.string + end + expected = "" + expected << "Content-Type: text/html\r\n" + expected << "\r\n" + expected << "

    Hello SOS

    " + assert_equal expected, output + end + + spec "prints 'Status:' header if status code is not 200." do + req_path = "/SOS.html" + env = dummy_env("GET", req_path) + app = ErubisApplication.new + sio = StringIO.new + app.run(env, sio) + expected = "Status: 404 Not Found\r\n" + expected << "Content-Type: text/html\r\n" + expected << "\r\n" + expected << "

    404 Not Found

    \n" + expected << "

    #{req_path}: not found.

    \n" + assert_equal expected, sio.string + end + + end + +end diff --git a/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-main.rb b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-main.rb new file mode 100644 index 0000000..c96298d --- /dev/null +++ b/validation/inspec/FedRAMP/Moderate/libraries/vendor/bundle/ruby/2.4.0/gems/erubis-2.7.0/test/test-main.rb @@ -0,0 +1,752 @@ +## +## $Rev$ +## $Release: 2.7.0 $ +## $Date$ +## + +require "#{File.dirname(__FILE__)}/test.rb" + +require 'tempfile' +require 'fileutils' +require 'erubis/main' + + +$script = File.dirname(TESTDIR) + '/bin/erubis' +#if test(?f, 'bin/erubis') +# $script = 'bin/erubis' +#elsif test(?f, '../bin/erubis') +# $script = '../bin/erubis' +#end + + +class StringWriter < String + def write(arg) + self << arg + end + def flush(*args) + # pass + end + def puts(arg) + case arg + when Array + arg.each do |item| + self << item << "\n" + end + else + self << arg.to_s + self << "\n" unless arg =~ /\n$/ + end + end +end + +class Erubis::Main + public :usage + public :show_properties + public :show_enhancers +end + + +class MainTest < Test::Unit::TestCase + + INPUT = <<'END' +list: +<% list = ['', 'b&b', '"ccc"'] + for item in list %> + - <%= item %> +<% end %> +user: <%= defined?(user) ? user : "(none)" %> +END + INPUT2 = INPUT.gsub(/\blist([^:])/, '@list\1').gsub(/\buser([^:])/, '@user\1') + +# SRC = <<'END' +#_buf = ''; _buf << "list:\n" +# list = ['', 'b&b', '"ccc"'] +# for item in list +#_buf << " - "; _buf << ( item ).to_s; _buf << "\n" +# end +#_buf << "user: "; _buf << ( defined?(user) ? user : "(none)" ).to_s; _buf << "\n" +#_buf +#END + SRC = <<'END' +_buf = ''; _buf << 'list: +'; list = ['', 'b&b', '"ccc"'] + for item in list + _buf << ' - '; _buf << ( item ).to_s; _buf << ' +'; end + _buf << 'user: '; _buf << ( defined?(user) ? user : "(none)" ).to_s; _buf << ' +'; +_buf.to_s +END +# SRC2 = SRC.gsub(/\blist /, '@list ').gsub(/\buser /, '@user ') + + OUTPUT = <<'END' +list: + - + - b&b + - "ccc" +user: (none) +END + + ESCAPED_OUTPUT = <<'END' +list: + - <aaa> + - b&b + - "ccc" +user: (none) +END + + + PI_INPUT = <<'END' + -
    +
    To assist the organization in meeting the requirements of this control, supporting documentation can be found at the following resources: @@ -479,7 +479,7 @@ resources:
    -
    +
    To assist the organization in meeting the requirements of this control, Docker Enterprise Edition supports various levels of user permissions and role-based access control enforcements. Administrator @@ -537,11 +537,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To assist the organization in meeting the requirements of this control, users and/or groups synchronized to Docker Enterprise Edition via LDAP can be configured at the directory service. @@ -574,11 +574,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Users and/or groups synchronized to Docker Enterprise Edition via LDAP can be configured at the directory service to ensure shared/group account credentials are terminated when members leave the group. @@ -611,11 +611,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Information system accounts synchronized to Docker Enterprise Edition via LDAP can be configured at the directory service to meet this requirement as necessary. @@ -667,14 +667,14 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To assist the organization in meeting the requirements of this control, supporting documentation can be found at the following resources: @@ -686,7 +686,7 @@ resources:
    -
    +
    To assist the organization in meeting the requirements of this control, Docker Enterprise Edition can be configured to aggregate container and daemon events via a number of logging drivers. @@ -700,7 +700,7 @@ Supporting documentation can be found at the following resources:
    -
    +
    To assist the organization in meeting the requirements of this control, Universal Control Plane can be configured to send system account log data to a remote logging service such as an Elasticsearch, @@ -719,7 +719,7 @@ at the following resources:
    -
    +
    To assist the organization in meeting the requirements of this control, when Docker Enterprise Edition is configured for LDAP integration, one can refer to the directory service's existing @@ -753,11 +753,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To assist the organization in meeting the requirements of this control, users and/or groups synchronized to Docker Enterprise Edition via LDAP can be managed at the directory service and disabled if @@ -801,13 +801,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    One can control which users and teams can create and manipulate Docker Trusted Registry resources. By default, no one can make changes to the cluster. Permissions can be granted and managed to enforce @@ -822,7 +822,7 @@ the following resources:
    -
    +
    One can control which users and teams can create and manipulate Universal Control Plane resources. By default, no one can make changes to the cluster. Permissions can be granted and managed to enforce @@ -844,7 +844,7 @@ the following resources:
    -
    +
    One can control which users and teams can create and manipulate Docker Enterprise Edition resources. By default, no one can make changes to the cluster. Permissions can be granted and managed to @@ -1000,13 +1000,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Supporting documentation to configure Docker Trusted Registry to meet the requirements of this control can be found at the following resources: @@ -1019,7 +1019,7 @@ resources:
    -
    +
    Docker Enterprise Edition can be configured to control the flow of information that originates from applications running in containers. Supporting documentation can be found at the following resources: @@ -1031,7 +1031,7 @@ Supporting documentation can be found at the following resources:
    -
    +
    Supporting documentation to configure Universal Control Plane to meet the requirements of this control can be found at the following resources: @@ -1156,13 +1156,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Supporting documentation to configure Docker Trusted Registry to meet the requirements of this control can be found at the following resources: @@ -1175,7 +1175,7 @@ resources:
    -
    +
    Docker Enterprise Edition can be configured to control the flow of information that originates from applications running in containers per organization-defined security policy filters. Supporting @@ -1188,7 +1188,7 @@ documentation can be found at the following resources:
    -
    +
    Supporting documentation to configure Universal Control Plane to meet the requirements of this control can be found at the following resources: @@ -1353,13 +1353,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Supporting documentation to configure Docker Trusted Registry to meet the requirements of this control can be found at the following resources: @@ -1372,7 +1372,7 @@ resources:
    -
    +
    Docker Enterprise Edition can be configured to separate the flow of information that originates from applications running in containers. Supporting documentation can be found at the following resources: @@ -1384,7 +1384,7 @@ Supporting documentation can be found at the following resources:
    -
    +
    Supporting documentation to configure Universal Control Plane to meet the requirements of this control can be found at the following resources: @@ -1449,12 +1449,12 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To assist the organization in meeting the requirements of this control, one can control which users and teams can create and manipulate Docker Trusted Registry resources. By default, no one can @@ -1470,7 +1470,7 @@ found at the following resources:
    -
    +
    To assist the organization in meeting the requirements of this control, one can control which users and teams can create and manipulate Universal Control Plane resources. By default, no one can @@ -1515,11 +1515,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To assist the organization in meeting the requirements of this control, one can control which users and teams can create and manipulate Universal Control Plane resources and employ principles of @@ -1565,11 +1565,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To assist the organization in meeting the requirements of this control, one can control which users and teams can create and manipulate Universal Control Plane resources and explicitly authorize @@ -1615,11 +1615,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To assist the organization in meeting the requirements of this control, one can control which users and teams can create and manipulate Universal Control Plane resources. By default, no one can @@ -1664,11 +1664,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To assist the organization in meeting the requirements of this control, one can control which users and teams can create and manipulate Universal Control Plane resources, including Docker @@ -1725,11 +1725,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To assist the organization in meeting the requirements of this control, one can restrict privileged accounts within Universal Control Plane to custom-defined roles. By default, no one can make changes to @@ -1789,11 +1789,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To assist the organization in meeting the requirements of this control, one can review all implemented grants, accounts and roles within Universal Control Plane and reassign/revoke privileges as @@ -1838,11 +1838,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Universal Control Plane users can be assigned to one of a number of different permission levels. The permission level assigned to a specific user determines that user's ability to execute certain @@ -1895,11 +1895,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Enterprise Edition logs privileged user events to standard log files. One can configure Docker Enterprise Edition to direct these event logs to a remote logging service such as an Elasticsearch, @@ -1949,12 +1949,12 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    One can control which users and teams can create and manipulate Docker Trusted Registry resources and prevent non-privileged users from executing privileged functions per the requirements of this @@ -1970,7 +1970,7 @@ functionality can be found at the following resources:
    -
    +
    One can control which users and teams can create and manipulate Universal Control Plane resources and prevent non-privileged users from executing privileged functions per the requirements of this @@ -2017,11 +2017,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    When Docker Enterprise Edition is integrated to a directory service via LDAP, one can reference the functionality of the directory service to configure the enforcement of a limit to the number of conesecutive @@ -2087,11 +2087,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The feature required to satisfy the requirements of this control has not yet been built in to Docker EE but is planned for a future release.The feature required to satisfy the requirements of this control has @@ -2178,11 +2178,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Enterprise Edition can be configured to limit the number of concurrent sessions for each account. These options can be found within the Universal Control Plane Admin Settings under the @@ -2220,11 +2220,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Per the requirements of AC-2 (5), Docker Enterprise Edition can be configured to enforce user session lifetime limits and renewal thresholds. These options can be found within the Universal Control @@ -2261,11 +2261,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Per the requirements of AC-2 (5), Docker Enterprise Edition can be configured to enforce user session lifetime limits and renewal thresholds. These options can be found within the Universal Control @@ -2304,11 +2304,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Per the requirements of AC-2 (5), Docker Enterprise Edition can be configured to enforce user session lifetime limits and renewal thresholds. These options can be found within the Universal Control @@ -2350,11 +2350,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Universal Control Plane includes a logout capability that allows a user to terminate his/her current session.
    @@ -2400,25 +2400,25 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To help the organization meet the requirements of this control, a review of actions allowed by unauthenticated users can be performed within Docker Trusted Registry.
    -
    +
    To help the organization meet the requirements of this control, one can restrict membership to the 'docker' group on underlying Linux hosts or the local "Administrators" group (and any other groups defined within 'daemon.json') on underlying Windows Server 2016 hosts to only authorized users.
    -
    +
    To help the organization meet the requirements of this control, a review of actions allowed by unauthenticated users can be performed within Universal Control Plane. @@ -2581,23 +2581,23 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To help the organization meet the requirements of this control, Docker Trusted Registry can be configured to allow/prohibit remote access.
    -
    +
    To help the organization meet the requirements of this control, Docker Enterprise Edition can be configured to allow/prohibit remote access to the Engine.
    -
    +
    To help the organization meet the requirements of this control, Universal Control Plane can be configured to allow/prohibit remote access. @@ -2645,29 +2645,29 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Trusted Registry logs and controls all local and remote access events. In addition, auditing can be configured on the underlying operating system to meet this control.
    -
    +
    Docker Enterprise Edition logs and controls all local and remote access events. In addition, auditing can be configured on the underlying operating system to meet this control.
    -
    +
    Universal Control Plane logs and controls all local and remote access events. In addition, auditing can be configured on the underlying operating system to meet this control.
    -
    +
    Docker Enterprise Edition logs and controls all local and remote access events. In addition, auditing can be configured on the underlying operating system to meet this control. @@ -2710,13 +2710,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    All remote access sessions to Docker Trusted Registry are protected with Transport Layer Security (TLS) 1.2. This is included at both the HTTPS application layer for access to the DTR user interface and for @@ -2724,13 +2724,13 @@ command-line based connections to the registry. In addition to this, all communication to DTR is enforced by way of two-way mutual TLS authentication.
    -
    +
    All remote access sessions to Docker Enterprise Edition are protected with Transport Layer Security (TLS) 1.2. In addition to this, all communication to Docker Enterprise Edition is enforced by way of two-way mutual TLS authentication.
    -
    +
    All remote access sessions to Universal Control Plane are protected with Transport Layer Security (TLS) 1.2. This is included at both the HTTPS application layer for access to the UCP user interface and for @@ -2776,25 +2776,25 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    A combination of managed load balancers, firewalls and access control lists, and virtual networking resources can be used to ensure traffic destined for Docker Trusted Registry replicas is routed through managed network access control points.
    -
    +
    A combination of managed load balancers, firewalls and access control lists, and virtual networking resources can be used to ensure traffic destined for Docker Enterprise Edition is routed through managed network access control points.
    -
    +
    A combination of managed load balancers, firewalls and access control lists, and virtual networking resources can be used to ensure traffic destined for Universal Control Plane managers and worker nodes is @@ -2832,11 +2832,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To help the organization meet the requirements of this control, Universal Control Plane can be configured to authorize certain privileged functions via remote access. @@ -2889,20 +2889,20 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Built-in firewall technology in Docker Trusted Registry's underlying operating system can be used to force the disconnection of remote connections to the host. In addition, UCP slave nodes running Docker Trusted Registry replicas can be paused or drained, which subsequently stops sessions to the DTR replica.
    -
    +
    Built-in firewall technology in Docker Enterprise Edition's underlying operating system can be used to force the disconnection of remote connections to the host. In addition, Docker Enterprise Edition @@ -2911,7 +2911,7 @@ subsequently stops and/or removes sessions to the node. Individual services and/or applications running on Docker Enterprise Edition can also be stopped and/or removed.
    -
    +
    Built-in firewall technology in Universal Control Plane's underlying operating system can be used to force the disconnection of remote connections to the host. In addition, UCP provides the option to pause @@ -3056,16 +3056,16 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To help the organization meet the requirements of this control, one can control which external systems can access Docker Trusted Registry.
    -
    +
    To help the organization meet the requirements of this control, one can control which external systems can access Universal Control Plane. @@ -3107,16 +3107,16 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To help the organization meet the requirements of this control, one can control which external systems can access Docker Trusted Registry.
    -
    +
    To help the organization meet the requirements of this control, one can control which external systems can access Universal Control Plane. @@ -3188,17 +3188,17 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To help the organization meet the requirements of this control, one can validate the assigned roles and access levels within Docker Trusted Registry to control information sharing.
    -
    +
    To help the organization meet the requirements of this control, one can validate the assigned roles and access levels within Universal Control Plane to control information sharing. diff --git a/docs/compliance/reference/800-53/au.md b/docs/compliance/reference/800-53/au.md index de5b3f9..3a020f4 100644 --- a/docs/compliance/reference/800-53/au.md +++ b/docs/compliance/reference/800-53/au.md @@ -70,13 +70,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    All of the event types indicated by this control are logged by a combination of the backend ucp-controller service within Universal Control Plane and the backend services that make up Docker Trusted @@ -91,7 +91,7 @@ resource:
    -
    +
    Both Universal Control Plane and Docker Trusted Registry backend service containers, all of which reside on Docker Enterprise Edition, log all of the event types indicated by this control (as explained by @@ -106,7 +106,7 @@ logging drivers can be found at the following resource:
    -
    +
    All of the event types indicated by this control are logged by the backend ucp-controller service within Universal Control Plane. In addition, each container created on a Universal Control Plane cluster @@ -172,14 +172,14 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Trusted Registry generates all of the audit record information indicated by this control. A sample audit event has been provided below: @@ -189,7 +189,7 @@ based auth suceeded","remote_addr":"192.168.33.1:55905","time":"2016-11-09T22:41:01Z","type":"auth ok","username":"dockeruser"}
    -
    +
    Both Universal Control Plane and Docker Trusted Registry are pre-configured to take advantage of Docker Enterprise Edition's built-in logging mechanisms. A sample audit event recorded by Docker @@ -208,7 +208,7 @@ Additional documentation can be referenced at the following resource:
    -
    +
    Universal Control Plane generates all of the audit record information indicated by this control. A sample audit event has been provided below: @@ -218,7 +218,7 @@ based auth suceeded","remote_addr":"192.168.33.1:55905","time":"2016-11-09T22:41:01Z","type":"auth ok","username":"dockeruser"}
    -
    +
    Docker Enterprise Edition generates all of the audit record information indicated by this control. A sample audit event has been provided below: @@ -266,13 +266,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Universal Control Plane can be configured to log data to a remote logging stack, which in turn, sends the Docker Trusted Registry backend container audit records to the remote logging stack. The @@ -286,7 +286,7 @@ information can be found at the following resource:
    -
    +
    Docker Enterprise Edition can be configured with various logging drivers to send audit events to an external logging stack. The logging stack can subsequently be used to interpolate the information defined @@ -299,7 +299,7 @@ documentation can be found at the following resource:
    -
    +
    Universal Control Plane can be configured to log data to a remote logging stack. The logging stack can subsequently be used to interpolate the information defined by this control from the logged @@ -350,13 +350,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Universal Control Plane can be configured to log data to a remote logging stack, which in turn, sends the Docker Trusted Registry backend container audit records to the remote logging stack. The @@ -370,7 +370,7 @@ information can be found at the following resource:
    -
    +
    Docker Enterprise Edition can be configured with various logging drivers to send audit events to an external logging stack. The logging stack can subsequently be used to interpolate the information defined @@ -383,7 +383,7 @@ documentation can be found at the following resource:
    -
    +
    Universal Control Plane can be configured to log data to a remote logging stack. The logging stack can subsequently be used to interpolate the information defined by this control from the logged @@ -458,13 +458,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Universal Control Plane can be configured to log data to a remote logging stack, which in turn, sends the Docker Trusted Registry backend container audit records to the remote logging stack. The @@ -478,7 +478,7 @@ found at the following resources:
    -
    +
    Docker Enterprise Edition can be configured with various logging drivers to send audit events to an external logging stack. The logging stack can be used to interpolate the information defined by this @@ -492,7 +492,7 @@ resources:
    -
    +
    Universal Control Plane can be configured to log data to a remote logging stack. The logging stack can subsequently be configured to alert individuals in the event of log processing failures. Additional @@ -542,13 +542,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Universal Control Plane can be configured to log data to a remote logging stack, which in turn, sends the Docker Trusted Registry backend container audit records to the remote logging stack. The @@ -562,7 +562,7 @@ found at the following resources:
    -
    +
    Docker Enterprise Edition can be configured with various logging drivers to send audit events to an external logging stack. The logging stack can subsequently be configured to warn the organization when the @@ -575,7 +575,7 @@ the following resources:
    -
    +
    Universal Control Plane can be configured to log data to a remote logging stack. The logging stack can subsequently be configured to warn the organization when the allocated log storage is full. @@ -625,13 +625,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Universal Control Plane can be configured to log data to a remote logging stack, which in turn, sends the Docker Trusted Registry backend container audit records to the remote logging stack. The @@ -645,7 +645,7 @@ the following resources:
    -
    +
    Docker Enterprise Edition can be configured with various logging drivers to send audit events to an external logging stack. The logging stack can subsequently be configured to warn the organization @@ -658,7 +658,7 @@ the following resources:
    -
    +
    Universal Control Plane can be configured to log data to a remote logging stack. The logging stack can subsequently be configured to warn the organization when audit log failures occur. Additional @@ -762,13 +762,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Universal Control Plane can be configured to log data to a remote logging stack, which in turn, sends the Docker Trusted Registry backend container audit records to the remote logging stack. The @@ -782,7 +782,7 @@ following resources:
    -
    +
    Docker Enterprise Edition can be configured with various logging drivers to send audit events to an external logging stack. The organization can subsequently centrally review and analyze all of the @@ -795,7 +795,7 @@ following resources:
    -
    +
    Universal Control Plane can be configured to log data to a remote logging stack. The organization can subsequently centrally review and analyze all of the Docker EE audit records. Additional information can @@ -909,13 +909,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Universal Control Plane can be configured to log data to a remote logging stack, which in turn, sends the Docker Trusted Registry backend container audit records to the remote logging stack. The @@ -931,7 +931,7 @@ during generation and transmission to a remote logging stack.
    -
    +
    Docker Enterprise Edition can be configured with various logging drivers to send audit events to an external logging stack. The logging stack can subsequently be used to facilitate the audit reduction and @@ -946,7 +946,7 @@ generation and transmission to a remote logging stack.
    -
    +
    Universal Control Plane can be configured to log data to a remote logging stack. The logging stack can subsequently be used to facilitate the audit reduction and report generation requirements of @@ -999,13 +999,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Universal Control Plane can be configured to log data to a remote logging stack, which in turn, sends the Docker Trusted Registry backend container audit records to the remote logging stack. The @@ -1019,7 +1019,7 @@ at the following resources:
    -
    +
    Docker Enterprise Edition can be configured with various logging drivers to send audit events to an external logging stack. The logging stack can subsequently be configured to parse information by @@ -1032,7 +1032,7 @@ at the following resources:
    -
    +
    Universal Control Plane can be configured to log data to a remote logging stack. The logging stack can subsequently be configured to parse information by organization-defined audit fields. Additional @@ -1096,27 +1096,27 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Trusted Registry uses the system clock of the underlying operating system on which it runs. This behavior cannot be modified.The underlying operating system on which Docker Trusted Registry runs should be configured such that its system clock uses Coordinated Universal Time (UTC) as indicated by this control. Refer to the operating system's instructions for doing so.
    -
    +
    Docker Enterprise Edition uses the system clock of the underlying operating system on which it runs. This behavior cannot be modified.The underlying operating system on which Docker Enterprise Edition runs should be configured such that its system clock uses Coordinated Universal Time (UTC) as indicated by this control. Refer to the operating system's instructions for doing so.
    -
    +
    Universal Control Plane uses the system clock of the underlying operating system on which it runs. This behavior cannot be modified.The underlying operating system on which Universal Control Plane runs should be configured such that its system clock uses Coordinated @@ -1165,13 +1165,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The underlying operating system on which Docker Trusted Registry runs should be configured such that its system clock compares itself with an authoritative time source as indicated by this control. This can be @@ -1184,7 +1184,7 @@ time period. This can be accomplished by utilizing the Network Time Protocol (NTP). Refer to the operating system's instructions for doing so.
    -
    +
    The underlying operating system on which Docker Enterprise Edition runs should be configured such that its system clock compares itself with an authoritative time source as indicated by this control. This can be @@ -1197,7 +1197,7 @@ organization-defined time period. This can be accomplished by utilizing the Network Time Protocol (NTP). Refer to the operating system's instructions for doing so.
    -
    +
    The underlying operating system on which Universal Control Plane runs should be configured such that its system clock compares itself with an authoritative time source as indicated by this control. This can be @@ -1258,13 +1258,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    By default, Docker Trusted Registry is configured to use the underlying logging capabilities of Docker Enterprise Edition. As such, on the underlying Linux operating system, only root and sudo users and @@ -1276,7 +1276,7 @@ logging stack. In this case, the organization is responsible for configuring the remote logging stack per the provisions of this control.
    -
    +
    On the underlying Linux operating system supporting Docker Enterprise Edition, only root and sudo users and users that have been added to the "docker" group have the ability to access the logs generated by @@ -1297,7 +1297,7 @@ information can be found at the following resources:
    -
    +
    By default, Universal Control Plane is configured to use the underlying logging capabilities of Docker Enterprise Edition. As such, on the underlying Linux operating system, only root and sudo users and @@ -1357,13 +1357,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Trusted Registry resides as an Application on a Universal Control Plane cluster, and can be configured to send logs to a remote logging stack. The logging stack can subsequently be configured to @@ -1376,7 +1376,7 @@ Additional information can be found at the following resources:
    -
    +
    Docker Enterprise Edition can be configured to use a logging driver that can subsequently meet the backup requirements of this control. Additional information can be found at the following resources: @@ -1387,7 +1387,7 @@ Additional information can be found at the following resources:
    -
    +
    Universal Control Plane can be configured to send logs to a remote logging stack. The logging stack can subsequently be configured to back up audit records per the schedule defined by this control. @@ -1437,13 +1437,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Trusted Registry resides as an Application on a Universal Control Plane cluster, and can be configured to send logs to a remote logging stack. The logging stack can subsequently be configured to @@ -1456,7 +1456,7 @@ information can be found at the following resources:
    -
    +
    Docker Enterprise Edition can be configured to use a logging driver that can subsequently meet the encryption mechanisms required by this control. Additional information can be found at the following @@ -1468,7 +1468,7 @@ resources:
    -
    +
    Universal Control Plane can be configured to send logs to a remote logging stack. The logging stack can subsequently be configured to meet the encryption mechanisms required by this control. Additional @@ -1538,11 +1538,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Enterprise Edition includes functionality known as Docker Content Trust which allows one to cryptographically sign Docker images. It enforces client-side signing and verification of image tags @@ -1652,13 +1652,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The organization will be responsible for meeting the requirements of this control. To assist with these requirements, Docker Trusted Registry resides as an Application on a Universal Control Plane @@ -1673,7 +1673,7 @@ information can be found at the following resources:
    -
    +
    The organization will be responsible for meeting the requirements of this control. To assist with these requirements, Docker Enterprise Edition can be configured to use a logging driver that stores data in @@ -1686,7 +1686,7 @@ information can be found at the following resources:
    -
    +
    The organization will be responsible for meeting the requirements of this control. To assist with these requirements, Universal Control Plane can be configured to send logs to a remote logging stack. This @@ -1753,13 +1753,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    All of the event types indicated by AU-2 a. are logged by a combination of the backend services within Universal Control Plane and Docker Trusted Registry. The underlying Linux operating system @@ -1777,7 +1777,7 @@ use for instructions on configuring this service.
    -
    +
    Both Universal Control Plane and Docker Trusted Registry backend service containers, all of which reside on Docker Enterprise Edition, log all of the event types indicated by this AU-2 a. These and other @@ -1798,7 +1798,7 @@ distribution in use for instructions on configuring this service.
    -
    +
    All of the event types indicated by AU-2 a. are logged by the backend ucp-controller service within Universal Control Plane. In addition, each container created on a Universal Control Plane cluster logs event @@ -1855,13 +1855,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Trusted Registry resides as an Application on a Universal Control Plane cluster, and as such, can be configured to send logs to a remote logging stack. This logging stack can subsequently be used to @@ -1875,7 +1875,7 @@ information can be found at the following resources:
    -
    +
    Docker Enterprise Edition can be configured with various logging drivers to send audit events to an external logging stack. This logging stack can subsequently be used to compile audit records in to @@ -1889,7 +1889,7 @@ resources:
    -
    +
    Universal Control Plane can be configured to send logs to a remote logging stack. This logging stack can subsequently be used to compile audit records in to a system-wide audit trail that is time-correlated @@ -1950,13 +1950,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Trusted Registry resides as an Application on a Universal Control Plane cluster, and as such, can be configured to send logs to a remote logging stack. This logging stack can subsequently be used to @@ -1969,7 +1969,7 @@ found at the following resources:
    -
    +
    Docker Enterprise Edition can be configured with various logging drivers to send audit events to an external logging stack. This logging stack can subsequently be used to meet the requirements of @@ -1982,7 +1982,7 @@ resources:
    -
    +
    Universal Control Plane can be configured to send logs to a remote logging stack. This logging stack can subsequently be used to meet the requirements of this control. Additional information can be found at diff --git a/docs/compliance/reference/800-53/cm.md b/docs/compliance/reference/800-53/cm.md index 43127e2..b1207f5 100644 --- a/docs/compliance/reference/800-53/cm.md +++ b/docs/compliance/reference/800-53/cm.md @@ -44,11 +44,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the configuration management requirements of this control. Additional @@ -90,11 +90,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the configuration management requirements of this control. Additional @@ -141,11 +141,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the configurmation management requirements of this control. Additional @@ -187,11 +187,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the configurmation management requirements of this control. CIS regularly @@ -238,11 +238,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the configurmation management requirements of this control. CIS regularly @@ -323,11 +323,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the configurmation management change control requirements of this control. @@ -377,11 +377,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the configurmation management change control requirements of this control. @@ -427,11 +427,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the configurmation management change control requirements of this control. @@ -507,11 +507,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the cryptography management requirements of this control. Additional @@ -598,12 +598,12 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Role-based access control can be configured within Docker Trusted Registry to meet the requirements of this control. Additional information can be found at the following resources: @@ -616,7 +616,7 @@ information can be found at the following resources:
    -
    +
    Role-based access control can be configured within Universal Control Plane to meet the requirements of this control. Additional information can be found at the following resources: @@ -657,11 +657,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the system change requirements of this control. Additional information can @@ -713,13 +713,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Content Trust is a capability provided by Docker Enterprise Edition that enforces client-side signing and verification of Docker image tags. It provides the ability to use digital signatures for data @@ -741,7 +741,7 @@ Additional information can be found at teh following resources:
    -
    +
    Before installing Docker Enterprise Edition, ensure that your supporting Linux operating system's packager manager supports package signature verification and that it is enabled. It is also required @@ -766,7 +766,7 @@ following resources:
    -
    +
    Docker Content Trust is a capability provided by Docker Enterprise Edition that enforces client-side signing and verification of Docker image tags. It provides the ability to use digital signatures for data @@ -874,13 +874,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The organization is responsible for meeting the requirements of this control. To assist with these requirements, the organization can incorporate the use of an external configuration management system to @@ -895,11 +895,11 @@ found at the following resources:
    -
    +
    The organization can incorporate the use of an external configuration management system to meet the requirements of this control.
    -
    +
    The organization is responsible for meeting the requirements of this control. To assist with these requirements, the organization can incorporate the use of an external configuration management system to @@ -957,11 +957,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To help the organization meet the requirements of this control, the latest CIS Docker Benchmark can be used as a secure configuration baseline. Additional information can be found at the following @@ -1005,11 +1005,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To help the organization meet the requirements of this control, Universal Control Plane includes a robust access control model to disable any functionality as mandated by this control. @@ -1052,26 +1052,26 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The organization can define a list of allowed base Docker images and make them available via Docker Trusted Registry. The organization can also prevent users from being able to pull Docker images from untrusted sources.
    -
    +
    In order to restrict which Docker images can be used to deploy applications to Docker Enterprise Edition, the organization can define a list of allowed base Docker images and make them available via Docker Trusted Registry. The organization can also prevent users from being able to pull Docker images from untrusted sources.
    -
    +
    In order to restrict which Docker images can be used to deploy applications to Universal Control Plane, the organization can define a list of allowed base Docker images and make them available via Docker @@ -1146,13 +1146,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The organization is responsible for meeting the requirements of this control. To assist with these requirements, the organization can define a list of allowed base Docker images and make them available @@ -1164,7 +1164,7 @@ stored in Docker Trusted Registry. This can be accomplished by using Docker Content Trust to sign Docker images which can subsequently be stored in Docker Trusted Registry.
    -
    +
    The organization is responsible for meeting the requirements of this control. To assist with these requirements and in order to restrict which Docker images can be used to deploy applications to Docker EE @@ -1173,7 +1173,7 @@ images and make them available via Docker Trusted Registry. The organization must also prevent users from being able to pull Docker images from untrusted sources.
    -
    +
    The organization is responsible for meeting the requirements of this control. To assist with these requirements and in order to restrict which Docker images can be used to deploy applications to Universal @@ -1348,11 +1348,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The CIS Docker Benchmark can be used as a baseline for securing Docker Enterprise Edition and for helping the organization meet the configuration management plan requirements of this control. Additional @@ -1434,11 +1434,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The organization is responsible for meeting the requirements of this control. To assist with these requirements, the organization can define a list of allowed base Docker images and make them available @@ -1473,11 +1473,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The organization can define a list of allowed base Docker images and make them available via Docker Trusted Registry to meet the requirements of this contorl. The organization can also prevent users diff --git a/docs/compliance/reference/800-53/cp.md b/docs/compliance/reference/800-53/cp.md index eb9dd50..4b28944 100644 --- a/docs/compliance/reference/800-53/cp.md +++ b/docs/compliance/reference/800-53/cp.md @@ -525,12 +525,12 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Trusted Registry maintains its cluster state via an internal key-value store. This, and other DTR transactions can be backed up and recovered. Additional information can be found at the following @@ -543,7 +543,7 @@ resources:
    -
    +
    Universal Control Plane maintains its cluster state via an internal key-value store. This, and other UCP transactions can be backed up and recovered. Additional information can be found at the following diff --git a/docs/compliance/reference/800-53/ia.md b/docs/compliance/reference/800-53/ia.md index 14f16aa..04d8b7a 100644 --- a/docs/compliance/reference/800-53/ia.md +++ b/docs/compliance/reference/800-53/ia.md @@ -54,11 +54,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Enterprise Edition can be configured to identify and authenticate users via it's integrated support for LDAP. Users and groups managed within the organization's LDAP directory service (e.g. @@ -154,27 +154,27 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The organization is responsible for meeting the requirements of this control. To assist with meeting these requirements, Docker Trusted Registry requires individual users to be authenticated in order to gain access to the system. Any permissions granted to the team(s) that which the user is a member are subsequently applied.
    -
    +
    The organization is responsible for meeting the requirements of this control. To assist with meeting these requirements, Universal Control Plane requires individual users to be authenticated in order to gain access to the system. Any permissions granted to the team(s) that which the user is a member are subsequently applied.
    -
    +
    The organization is responsible for meeting the requirements of this control. To assist with meeting these requirements, Docker Enterprise Edition requires individual users to be authenticated in order to gain @@ -229,11 +229,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Enterprise Edition integrates with LDAP for authenticating users to an external directory service. You should configure your external directory service for ensuring that you are protected against @@ -267,11 +267,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Enterprise Edition integrates with LDAP for authenticating users to an external directory service. You should configure your external directory service for ensuring that you are protected against @@ -355,13 +355,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Trusted Registry replicas reside on Universal Control Plane worker nodes. In order for UCP worker nodes to join a Universal Control Plane cluster, they must be identified and authenticated via a @@ -376,13 +376,13 @@ manager nodes has been established. Additional information can be found at the f
    -
    +
    In order for other Docker EE engine nodes to be able to join a cluster managed by Universal Control Plane, they must be identified and authenticated via either a manager or worker token. Use of the token includes trust on first use mutual TLS.
    -
    +
    In order for nodes to join a Universal Control Plane cluster, they must be identified and authenticated via either a manager or worker token. Additional information can be found at the following resources: @@ -462,11 +462,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The organization is responsible for meeting the requirements of this control. To assist with meeting these requirements, an external directory service integrated with Docker Enterprise Edition via LDAP @@ -542,11 +542,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The organization is responsible for meeting the requirements of this control. To assist with meeting these requirements, an external directory service integrated with Docker Enterprise Edition via LDAP @@ -624,11 +624,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The organization is responsible for meeting the requirements of this control. To assist with meeting these requirements, an external directory service integrated with Docker Enterprise Edition via LDAP @@ -715,11 +715,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    An external directory service integrated with Docker Enterprise Edition via LDAP can be configured to enforce minimum password complexity requirements. Refer to your directory service's @@ -789,13 +789,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Trusted Registry includes a Docker volume which holds the root key material for the DTR root CA that issues certificats. In addition Universal Control Plane contains two, built-in root certificate @@ -830,7 +830,7 @@ Additional information can be found at the following resources:
    -
    +
    Universal Control Plane contains two, built-in root certificate authorities. One CA is used for signing client bundles generated by users. The other CA is used for TLS communication between UCP cluster @@ -857,7 +857,7 @@ can be found at the following resources:
    -
    +
    All users within a Docker Enterprise Edition cluster can create a client certificate bundle for authenticating in to the cluster from the Docker client tooling. When a user attempts to authenticate in to @@ -916,11 +916,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The organization is responsible for meeting the requirements of this control. To assist with meeting these requirements, an external directory service integrated with Docker Enterprise Edition via LDAP can be @@ -966,11 +966,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The organization is responsible for meeting the requirements of this control. To assist with meeting these requirements, an external directory service integrated with Docker Enterprise Edition via LDAP @@ -1101,17 +1101,17 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Trusted Registry obscures all feedback of authentication information during the authentication process. This includes both authentication via the web UI and the CLI.
    -
    +
    Universal Control Plane obscures all feedback of authentication information during the authentication process. This includes both authentication via the web UI and the CLI. @@ -1149,18 +1149,18 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    All access to Docker Trusted Registry is protected with Transport Layer Security (TLS) 1.2 with the AES-GCM cipher. This includes both SSH access to the individual UCP nodes and CLI-/web-based access to the UCP management functions with mutual TLS and HTTPS respectively.
    -
    +
    All access to Universal Control Plane is protected with Transport Layer Security (TLS) 1.2 with the AES GCM cipher. This includes both SSH access to the individual UCP nodes and CLI-/web-based access to @@ -1199,17 +1199,17 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Users managed by Docker Trusted Registry can be grouped per the requirements of the organization and as defined by this control. This can include groupings for non-organizational users.
    -
    +
    Users managed by Universal Control Plane can be grouped per the requirements of the organization and as defined by this control. This can include groupings for non-organizational users. @@ -1252,11 +1252,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    An external directory service integrated with Docker Enterprise Edition via LDAP can be configured to meet the FICAM requirements as indicated by this control. Refer to your directory service's @@ -1290,11 +1290,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The organization is responsible for meeting the requirements of this control. To assist with meeting these requirements, an external directory service integrated with Docker Enterprise Edition via LDAP @@ -1330,11 +1330,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    The organization is responsible for meeting the requirements of this control. To assist with meeting these requirements, an external directory service integrated with Docker Enterprise Edition via LDAP diff --git a/docs/compliance/reference/800-53/ra.md b/docs/compliance/reference/800-53/ra.md index c20e6e8..f8634f9 100644 --- a/docs/compliance/reference/800-53/ra.md +++ b/docs/compliance/reference/800-53/ra.md @@ -114,12 +114,12 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To assist the orgnization in meeting the requirements of this control, the Docker Security Scanning (DSS) component of Docker Trusted Registry (DTR) that is included with the Docker Enterprise @@ -127,7 +127,7 @@ Edition Advanced tier can be used to scan Docker images for vulnerabilities against known vulnerability databases. Scans can be triggered either manually or when Docker images are pushed to DTR.
    -
    +
    The Docker Security Scanning tool allows for the scanning of Docker images in Docker Trusted Registry against the Common Vulnerabilities and Exposures (CVE) dictionary. @@ -160,11 +160,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To assist the orgnization in meeting the requirements of this control, the Docker Security Scanning component of Docker Trusted Registry (DTR) that is included with the Docker Enterprise Edition @@ -214,19 +214,19 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    To assist the orgnization in meeting the requirements of this control, the Docker Security Scanning component of Docker Trusted Registry (DTR) that is included with the Docker Enterprise Edition Advanced tier identifies vulnerabilities in a Docker image and marks them against predefined criticality levels; critical major and minor.
    -
    +
    The Docker Security Scanning tool allows for the scanning of Docker images in Docker Trusted Registry against the Common Vulnerabilities and Exposures (CVE).' dictionary @@ -269,11 +269,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Only the appropriate users that the organization has provided Docker Trusted Registry access to are able to view and interpret vulnerability scan results. @@ -306,11 +306,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    For each Docker image pushed to Docker Trusted Registry at a given time, Docker Security Scaninng retains a list of vulnerabilities detected. The DTR API can be queried to retrieve the vulnerability @@ -345,11 +345,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Security Scanning maintains a historical bill-of-materials (BOM) for all Docker images that are scanned. Results of previous vulnerability scans can be reviewed and audited per the requirements diff --git a/docs/compliance/reference/800-53/sa.md b/docs/compliance/reference/800-53/sa.md index 55849d4..2e3d101 100644 --- a/docs/compliance/reference/800-53/sa.md +++ b/docs/compliance/reference/800-53/sa.md @@ -341,13 +341,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Content Trust gives you the ability to verify both the integrity and the publisher of all the data received from a Docker Trusted Registry over any channel. It allows operations with a remote @@ -358,7 +358,7 @@ client-side verification of the integrity and publisher of specific image tags. Docker Trusted Registry includes an integrated imaging signing service.
    -
    +
    Docker Content Trust gives you the ability to verify both the integrity and the publisher of all the data received from a Docker Trusted Registry over any channel. It allows operations with a remote @@ -368,7 +368,7 @@ sent to and receive from remote DTR instances. These signatures allow client-side verification of the integrity and publisher of specific image tags.
    -
    +
    The organization is responsible for meeting the requirements of this control. To assist with these requirements, Docker Content Trust gives you the ability to verify both the integrity and the publisher of all diff --git a/docs/compliance/reference/800-53/sc.md b/docs/compliance/reference/800-53/sc.md index c238d68..f301dbe 100644 --- a/docs/compliance/reference/800-53/sc.md +++ b/docs/compliance/reference/800-53/sc.md @@ -59,12 +59,12 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Trusted Registry is made up of a number of backend services that provide for both user functionality (including user interface services) and system management functionality. Each of these services @@ -78,7 +78,7 @@ found at the following resources:
    -
    +
    Universal Control Plane is made up of a number of backend services that provide for both user functionality (including user interface services) and system management functionality. Each of these services @@ -450,11 +450,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Enterprise Edition is designed to run application containers whose content can be completely isolated/segregated from other application containers within the same node/cluster. This is @@ -628,11 +628,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Enterprise Edition can be installed on the following operating systems: CentOS 7.1+, Red Hat Enterprise Linux 7.0+, Ubuntu 14.04 LTS+, SUSE Linux Enterprise 12+ and Windows Server 2016+. In order to @@ -677,11 +677,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Enterprise Edition can be installed on the following operating systems: CentOS 7.1+, Red Hat Enterprise Linux 7.0+, Ubuntu 14.04 LTS+, SUSE Linux Enterprise 12+ and Windows Server 2016+. In order to @@ -923,13 +923,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    All remote access sessions to Docker Trusted Registry are protected with Transport Layer Security (TLS) 1.2 with the AES GCM cipher. This is included at both the HTTPS application layer for access to the DTR @@ -937,13 +937,13 @@ user interface and for command-line based connections to the registry. In addition to this, all communication to DTR is enforced by way of two-way mutual TLS authentication.
    -
    +
    All remote access sessions to Docker Enterprise Edition are protected with Transport Layer Security (TLS) 1.2 with the AES GCM cipher. In addition to this, all communication to and between Docker Enterprise Editions is enforced by way of two-way mutual TLS authentication.
    -
    +
    All remote access sessions to Universal Control Plane are protected with Transport Layer Security (TLS) 1.2 with the AES GCM cipher. This is included at both the HTTPS application layer for access to the UCP @@ -979,11 +979,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Enterprise Edition invalidates session identifiers upon user logout per the requirements of this control.
    @@ -1075,11 +1075,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    All remote access sessions to Docker Enterprise Edition are protected with Transport Layer Security (TLS) 1.2 with the AES GCM cipher. In addition to this, all communication to/from and between Docker @@ -1126,13 +1126,13 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    All remote access sessions to Docker Trusted Registry are protected with Transport Layer Security (TLS) 1.2 with the AES GCM cipher. This is included at both the HTTPS application layer for access to the DTR @@ -1140,13 +1140,13 @@ user interface and for command-line based connections to the registry. In addition to this, all communication to DTR is enforced by way of two-way mutual TLS authentication.
    -
    +
    All remote access sessions to Docker Enterprise Edition are protected with Transport Layer Security (TLS) 1.2 with the AES GCM cipher. In addition to this, all communication to and between Docker Enterprise Editions is enforced by way of two-way mutual TLS authentication.
    -
    +
    All remote access sessions to Universal Control Plane are protected with Transport Layer Security (TLS) 1.2 with the AES GCM cipher. This is included at both the HTTPS application layer for access to the UCP diff --git a/docs/compliance/reference/800-53/si.md b/docs/compliance/reference/800-53/si.md index 12e794a..81463dc 100644 --- a/docs/compliance/reference/800-53/si.md +++ b/docs/compliance/reference/800-53/si.md @@ -155,11 +155,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Enterprise Edition packages for supported underlying operating systems can only be obtained from Docker, Inc. The Docker EE repositories from which Docker EE packages are obtained are protected @@ -865,25 +865,25 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    All error messages generated via the configured logging mechanism of Docker Trusted Registry are displayed such that they meet the requirements of this control. Only users that are authorized the appropriate level of access can view these error messages.
    -
    +
    All error messages generated via the logging mechanisms of the Docker Enterprise Edition engine are displayed such that they meet the requirements of this control. Only users that are authorized the appropriate level of access can view these error messages.
    -
    +
    All error messages generated via the configured logging mechanism of Universal Control Plane are displayed such that they meet the requirements of this control. Only users that are authorized the @@ -1015,11 +1015,11 @@ Responsible role(s) - Docker system #### Implementation Details
    -
    +
    Docker Enterprise Edition can be installed on the following operating systems: CentOS 7.1+, Red Hat Enterprise Linux 7.0+, Ubuntu 14.04 LTS+, SUSE Linux Enterprise 12+ and Windows Server 2016+. In order to
    +
    Homepage
    github.com/sporkmonger/addressable
    +
    Author
    Bob Aman
    +
    Copyright
    Copyright © Bob Aman
    +
    License
    Apache 2.0
    +