diff --git a/README.md b/README.md
index ec2594dff9..d46960a4bb 100644
--- a/README.md
+++ b/README.md
@@ -18,13 +18,19 @@ $ npm install react-jsonschema-form --save
As a script dependency served from a CDN:
```html
-
+
```
-Source maps are available at [this url](https://npmcdn.com/react-jsonschema-form@0.4.1/dist/react-jsonschema-form-0.4.1.js.map).
+Source maps are available at [this url](https://npmcdn.com/react-jsonschema-form@0.5.0/dist/react-jsonschema-form.js.map).
Note that the CDN version **does not** embed *react* nor *react-dom*.
+A default, very basic CSS stylesheet is provided, though you're encouraged to build your own.
+
+```html
+
+```
+
## Usage
```js
@@ -43,7 +49,7 @@ const schema = {
}
};
-const formData = {
+const formData = {
title: "First task",
done: true
};
@@ -59,6 +65,10 @@ render((
), document.getElementById("app"));
```
+That should give something like this (if you use the default stylesheet):
+
+
+
### Alternative widgets
JSONSchema is limited for describing how a given data type should be rendered as an input component, that's why this lib introduces the concept of *UI schema*. A UI schema is basically an object literal describing which UI widget should be used to render a certain field
@@ -100,6 +110,9 @@ $ npm start
A [Cosmos development server](https://github.com/skidding/cosmos) showcasing components with hot reload enabled is available at [localhost:8080](http://localhost:8080).
+
+
+
## Tests
```
diff --git a/css/react-jsonschema-form.css b/css/react-jsonschema-form.css
new file mode 100644
index 0000000000..eb4d60cce8
--- /dev/null
+++ b/css/react-jsonschema-form.css
@@ -0,0 +1,95 @@
+.rjsf * {
+ box-sizing: border-box;
+}
+
+.rjsf {
+ padding: 0;
+ font-size: .8em;
+ color: #555;
+}
+
+.rjsf fieldset {
+ border: 1px solid #aaa;
+ border-radius: 4px;
+ margin-top: .5em;
+}
+
+.rjsf fieldset legend {
+ font-weight: bold;
+ margin-left: -.2em;
+}
+
+.rjsf button {
+ display: inline-block;
+ color: #FFF;
+ background-color: #286090;
+ border-color: #122B40;
+ padding: 2px 8px;
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 1.5em;
+ white-space: nowrap;
+ vertical-align: middle;
+ cursor: pointer;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+
+.rjsf input[type=text] {
+ display: block;
+ width: 100%;
+ height: 34px;
+ padding: 3px 6px;
+ font-size: 14px;
+ color: #555;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.075) inset;
+}
+
+.rjsf .errors {
+ color: red;
+}
+
+.rjsf .field {
+ padding-top: 1em;
+}
+
+.rjsf .field label {
+ display: block;
+ font-weight: bold;
+}
+
+.rjsf .field input[type=text] {
+}
+
+.rjsf .field select {
+ display: block;
+}
+
+.rjsf .array-item-list {
+}
+
+.rjsf .array-item-add button,
+.rjsf .array-item-remove button {
+ width: 32px;
+ height: 32px;
+}
+
+.rjsf .array-item-add {
+ margin-bottom: 0;
+}
+
+.rjsf .array-item-remove {
+ margin: .2em 0;
+}
+
+.rjsf .field-array-of-string input[type=text] {
+ width: calc(100% - 38px);
+}
+
+.rjsf .field-array-of-string .array-item-remove {
+ float: right;
+ width: 30px;
+ margin-top: -2.3em;
+}
diff --git a/devServer.js b/devServer.js
index e58c057013..b2029fc639 100644
--- a/devServer.js
+++ b/devServer.js
@@ -19,11 +19,15 @@ app.get("/", function(req, res) {
res.sendFile(path.join(__dirname, "index.html"));
});
+app.get("/react-jsonschema-form.css", function(req, res) {
+ res.sendFile(path.join(__dirname, "css", "react-jsonschema-form.css"));
+});
+
app.listen(port, "localhost", function(err) {
if (err) {
console.log(err);
return;
}
- console.log("Listening at localhost:" + port);
+ console.log("Listening at http://localhost:" + port);
});
diff --git a/dist/react-jsonschema-form-0.4.1.js.map b/dist/react-jsonschema-form-0.4.1.js.map
deleted file mode 100644
index 48aad7d6af..0000000000
--- a/dist/react-jsonschema-form-0.4.1.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///react-jsonschema-form-0.4.1.js","webpack:///webpack/bootstrap 97a5ad5ef6bd830ea0e8","webpack:///./index.js","webpack:///./components/Form.js","webpack:///external {\"root\":\"React\",\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\"}","webpack:///../~/jsonschema/lib/index.js","webpack:///../~/jsonschema/lib/validator.js","webpack:///../~/webpack/~/node-libs-browser/~/url/url.js","webpack:///../~/webpack/~/node-libs-browser/~/url/~/punycode/punycode.js","webpack:///../~/webpack/buildin/module.js","webpack:///../~/webpack/~/node-libs-browser/~/url/~/querystring/index.js","webpack:///../~/webpack/~/node-libs-browser/~/url/~/querystring/decode.js","webpack:///../~/webpack/~/node-libs-browser/~/url/~/querystring/encode.js","webpack:///../~/jsonschema/lib/attribute.js","webpack:///../~/jsonschema/lib/helpers.js","webpack:///./utils.js","webpack:///./components/widgets/RadioWidget.js","webpack:///./components/widgets/Wrapper.js","webpack:///./components/widgets/SelectWidget.js","webpack:///./components/widgets/TextareaWidget.js","webpack:///./components/fields/SchemaField.js","webpack:///./components/fields/StringField.js","webpack:///./components/widgets/TextWidget.js","webpack:///./components/fields/ArrayField.js","webpack:///./components/fields/BooleanField.js","webpack:///./components/widgets/CheckboxWidget.js","webpack:///./components/fields/ObjectField.js","webpack:///./components/fields/UnsupportedField.js","webpack:///./components/ErrorList.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_componentsForm","_componentsForm2","_classCallCheck","instance","Constructor","TypeError","_inherits","subClass","superClass","prototype","create","constructor","enumerable","writable","configurable","setPrototypeOf","__proto__","_createClass","defineProperties","target","props","i","length","descriptor","key","protoProps","staticProps","_get","_x2","_x3","_x4","_again","object","property","receiver","Function","desc","getOwnPropertyDescriptor","undefined","getter","get","parent","getPrototypeOf","_react","_react2","_jsonschema","_utils","_fieldsSchemaField","_fieldsSchemaField2","_ErrorList","_ErrorList2","Form","_Component","state","getStateFromProps","uiSchema","nextProps","setState","edit","formData","getDefaultFormState","schema","status","errors","validate","validator","Validator","_state","createElement","_this","options","arguments","_","onChange","event","_this2","preventDefault","keys","onError","console","error","onSubmit","_props","className","bind","renderErrors","type","Component","ValidatorResult","ValidationError","SchemaError","v","urilib","attribute","helpers","SchemaContext","schemas","unresolvedRefs","types","attributes","validators","addSchema","uri","ourUri","addSubSchema","baseuri","$ref","resolvedUri","resolve","push","ourBase","deepCompareStrict","Error","documentUri","replace","addSubSchemaArray","items","Array","additionalItems","addSubSchemaObject","properties","additionalProperties","definitions","patternProperties","dependencies","disallow","allOf","anyOf","oneOf","not","setSchemas","getSchema","urn","ctx","propertyName","base","result","validateSchema","shouldResolve","ref","self","subschema","forEach","s","deepMerge","switchSchema","resolved","subctx","propertyPath","skipAttributes","ignoreProperties","indexOf","validatorErr","allowUnknownAttributes","importErrors","rewrite","parsed","parse","fragment","hash","document","substr","objectGetPath","testType","res","string","number","integer","array","date","Date","any","Url","protocol","slashes","auth","host","port","hostname","search","query","pathname","path","href","urlParse","url","parseQueryString","slashesDenoteHost","isObject","u","urlFormat","isString","format","urlResolve","source","relative","urlResolveObject","resolveObject","arg","isNull","isNullOrUndefined","punycode","protocolPattern","portPattern","delims","unwise","concat","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","rest","trim","proto","exec","lowerProto","toLowerCase","match","hostEnd","hec","atSign","lastIndexOf","slice","decodeURIComponent","parseHost","ipv6Hostname","hostparts","split","l","part","newpart","j","k","charCodeAt","validParts","notHost","bit","unshift","join","domainArray","newOut","encode","h","ae","esc","encodeURIComponent","escape","qm","stringify","charAt","rel","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","pop","authInHost","last","hasTrailingSlash","up","splice","isAbsolute","__WEBPACK_AMD_DEFINE_RESULT__","global","RangeError","map","fn","mapDomain","parts","regexSeparators","labels","encoded","ucs2decode","extra","output","counter","ucs2encode","stringFromCharCode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","floor","damp","baseMinusTMin","tMax","skew","decode","input","out","basic","index","oldi","w","t","baseMinusT","inputLength","n","initialN","bias","initialBias","delimiter","maxInt","tMin","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","test","toASCII","regexNonASCII","freeGlobal","nodeType","window","overflow","not-basic","invalid-input","Math","String","fromCharCode","version","ucs2","webpackPolyfill","deprecate","paths","children","hasOwnProperty","prop","qs","sep","eq","regexp","maxKeys","len","kstr","vstr","x","idx","isArray","stringifyPrimitive","isFinite","name","ks","testSchema","valid","testAdditionalProperty","addError","argument","message","JSON","makeChild","testArrays","a","description","title","exclusiveMinimum","exclusiveMaximum","$schema","extends","some","list","msg","count","filter","pattern","expr","RegExp","minProperties","maxProperties","every","minimum","maximum","divisibleBy","multipleOf","required","isFormat","minLength","maxLength","minItems","maxItems","uniqueItems","dep","childContext","notTypes","schemaId","stack","toString","throwError","detail","err","validatorType","errs","captureStackTrace","makeSuffix","FORMAT_REGEXPS","date-time","time","email","ip-address","ipv6","color","host-name","alpha","alphanumeric","utc-millisec","parseFloat","parseInt","isNaN","regex","e","style","phone","ipv4","b","aKeys","bKeys","src","dst","o","encodePath","defaultTypeValue","defaultFieldValue","getAlternativeWidget","_componentsWidgetsRadioWidget2","_componentsWidgetsSelectWidget2","_componentsWidgetsTextareaWidget2","reduce","acc","_componentsWidgetsRadioWidget","_componentsWidgetsSelectWidget","_componentsWidgetsTextareaWidget","RadioWidget","_ref","label","placeholder","defaultValue","random","_widgetsWrapper2","option","checked","_widgetsWrapper","getLabel","REQUIRED_FIELD_SYMBOL","Wrapper","processValue","Number","SelectWidget","TextWidget","SchemaField","FieldComponent","COMPONENT_TYPES","_UnsupportedField2","_StringField","_StringField2","_ArrayField","_ArrayField2","_BooleanField","_BooleanField2","_ObjectField","_ObjectField2","_UnsupportedField","boolean","StringField","widget","commonProps","Widget","_extends","_widgetsSelectWidget2","_widgetsTextWidget2","assign","_widgetsTextWidget","_widgetsSelectWidget","defaultProps","_x","_SchemaField","_SchemaField2","ArrayField","itemsSchema","asyncSetState","item","isItemRequired","onClick","onDropClick","onAddClick","BooleanField","_widgetsCheckboxWidget2","_widgetsCheckboxWidget","CheckboxWidget","defaultChecked","_defineProperty","ObjectField","isRequired","UnsupportedField","ErrorList"],"mappings":"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","file":"react-jsonschema-form-0.4.1.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"JSONSchemaForm\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"JSONSchemaForm\"] = factory(root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"JSONSchemaForm\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"JSONSchemaForm\"] = factory(root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _componentsForm = __webpack_require__(1);\n\t\n\tvar _componentsForm2 = _interopRequireDefault(_componentsForm);\n\n\texports[\"default\"] = _componentsForm2[\"default\"];\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tvar _get = function get(_x2, _x3, _x4) { var _again = true; _function: while (_again) { var object = _x2, property = _x3, receiver = _x4; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x2 = parent; _x3 = property; _x4 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _jsonschema = __webpack_require__(3);\n\t\n\tvar _utils = __webpack_require__(13);\n\t\n\tvar _fieldsSchemaField = __webpack_require__(18);\n\t\n\tvar _fieldsSchemaField2 = _interopRequireDefault(_fieldsSchemaField);\n\t\n\tvar _ErrorList = __webpack_require__(26);\n\t\n\tvar _ErrorList2 = _interopRequireDefault(_ErrorList);\n\t\n\tvar Form = (function (_Component) {\n\t _inherits(Form, _Component);\n\t\n\t _createClass(Form, null, [{\n\t key: \"defaultProps\",\n\t value: {\n\t uiSchema: {}\n\t },\n\t enumerable: true\n\t }]);\n\t\n\t function Form(props) {\n\t _classCallCheck(this, Form);\n\t\n\t _get(Object.getPrototypeOf(Form.prototype), \"constructor\", this).call(this, props);\n\t this.state = this.getStateFromProps(props);\n\t }\n\t\n\t _createClass(Form, [{\n\t key: \"componentWillReceiveProps\",\n\t value: function componentWillReceiveProps(nextProps) {\n\t this.setState(this.getStateFromProps(nextProps));\n\t }\n\t }, {\n\t key: \"getStateFromProps\",\n\t value: function getStateFromProps(props) {\n\t var edit = !!props.formData;\n\t var formData = props.formData || (0, _utils.getDefaultFormState)(props.schema) || null;\n\t return {\n\t status: \"initial\",\n\t formData: formData,\n\t edit: edit,\n\t errors: edit ? this.validate(formData) : []\n\t };\n\t }\n\t }, {\n\t key: \"validate\",\n\t value: function validate(formData) {\n\t var validator = new _jsonschema.Validator();\n\t return validator.validate(formData, this.props.schema).errors;\n\t }\n\t }, {\n\t key: \"renderErrors\",\n\t value: function renderErrors() {\n\t var _state = this.state;\n\t var status = _state.status;\n\t var errors = _state.errors;\n\t\n\t if (status !== \"editing\" && errors.length) {\n\t return _react2[\"default\"].createElement(_ErrorList2[\"default\"], { errors: errors });\n\t }\n\t return null;\n\t }\n\t }, {\n\t key: \"onChange\",\n\t value: function onChange(formData) {\n\t var _this = this;\n\t\n\t var options = arguments.length <= 1 || arguments[1] === undefined ? { validate: true } : arguments[1];\n\t\n\t this.setState({\n\t status: \"editing\",\n\t formData: formData,\n\t errors: options.validate ? this.validate(formData) : this.state.errors\n\t }, function (_) {\n\t if (_this.props.onChange) {\n\t _this.props.onChange(_this.state);\n\t }\n\t });\n\t }\n\t }, {\n\t key: \"onSubmit\",\n\t value: function onSubmit(event) {\n\t var _this2 = this;\n\t\n\t event.preventDefault();\n\t this.setState({ status: \"submitted\" });\n\t var errors = this.validate(this.state.formData);\n\t if (Object.keys(errors).length > 0) {\n\t this.setState({ errors: errors }, function (_) {\n\t if (_this2.props.onError) {\n\t _this2.props.onError(errors);\n\t } else {\n\t console.error(\"Form validation failed\", errors);\n\t }\n\t });\n\t return;\n\t } else if (this.props.onSubmit) {\n\t this.props.onSubmit(this.state);\n\t }\n\t this.setState({ status: \"initial\" });\n\t }\n\t }, {\n\t key: \"render\",\n\t value: function render() {\n\t var _props = this.props;\n\t var schema = _props.schema;\n\t var uiSchema = _props.uiSchema;\n\t var formData = this.state.formData;\n\t\n\t return _react2[\"default\"].createElement(\n\t \"form\",\n\t { className: \"generic-form\", onSubmit: this.onSubmit.bind(this) },\n\t this.renderErrors(),\n\t _react2[\"default\"].createElement(_fieldsSchemaField2[\"default\"], {\n\t schema: schema,\n\t uiSchema: uiSchema,\n\t formData: formData,\n\t onChange: this.onChange.bind(this) }),\n\t _react2[\"default\"].createElement(\n\t \"p\",\n\t null,\n\t _react2[\"default\"].createElement(\n\t \"button\",\n\t { type: \"submit\" },\n\t \"Submit\"\n\t )\n\t )\n\t );\n\t }\n\t }]);\n\t\n\t return Form;\n\t})(_react.Component);\n\t\n\texports[\"default\"] = Form;\n\t\n\tif (false) {\n\t Form.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t uiSchema: _react.PropTypes.object,\n\t formData: _react.PropTypes.any,\n\t onChange: _react.PropTypes.func,\n\t onError: _react.PropTypes.func,\n\t onSubmit: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = Form;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar Validator = module.exports.Validator = __webpack_require__(4);\n\t\n\tmodule.exports.ValidatorResult = __webpack_require__(12).ValidatorResult;\n\tmodule.exports.ValidationError = __webpack_require__(12).ValidationError;\n\tmodule.exports.SchemaError = __webpack_require__(12).SchemaError;\n\t\n\tmodule.exports.validate = function (instance, schema, options) {\n\t var v = new Validator();\n\t return v.validate(instance, schema, options);\n\t};\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar urilib = __webpack_require__(5);\n\t\n\tvar attribute = __webpack_require__(11);\n\tvar helpers = __webpack_require__(12);\n\tvar ValidatorResult = helpers.ValidatorResult;\n\tvar SchemaError = helpers.SchemaError;\n\tvar SchemaContext = helpers.SchemaContext;\n\t\n\t/**\n\t * Creates a new Validator object\n\t * @name Validator\n\t * @constructor\n\t */\n\tvar Validator = function Validator() {\n\t this.schemas = {};\n\t this.unresolvedRefs = [];\n\t\n\t // Use Object.create to make this extensible without Validator instances stepping on each other's toes.\n\t this.types = Object.create(types);\n\t this.attributes = Object.create(attribute.validators);\n\t};\n\t\n\t// Hint at the presence of a property\n\tValidator.prototype.schemas = null;\n\tValidator.prototype.types = null;\n\tValidator.prototype.attributes = null;\n\tValidator.prototype.unresolvedRefs = null;\n\t\n\t/**\n\t * Adds a schema with a certain urn to the Validator instance.\n\t * @param schema\n\t * @param urn\n\t * @return {Object}\n\t */\n\tValidator.prototype.addSchema = function addSchema(schema, uri) {\n\t if (!schema) {\n\t return null;\n\t }\n\t var ourUri = uri || schema.id;\n\t this.addSubSchema(ourUri, schema);\n\t if (ourUri) {\n\t this.schemas[ourUri] = schema;\n\t }\n\t return this.schemas[ourUri];\n\t};\n\t\n\tValidator.prototype.addSubSchema = function addSubSchema(baseuri, schema) {\n\t if (!schema || typeof schema != 'object') return;\n\t // Mark all referenced schemas so we can tell later which schemas are referred to, but never defined\n\t if (schema.$ref) {\n\t var resolvedUri = urilib.resolve(baseuri, schema.$ref);\n\t // Only mark unknown schemas as unresolved\n\t if (this.schemas[resolvedUri] === undefined) {\n\t this.schemas[resolvedUri] = null;\n\t this.unresolvedRefs.push(resolvedUri);\n\t }\n\t return;\n\t }\n\t var ourUri = schema.id && urilib.resolve(baseuri, schema.id);\n\t var ourBase = ourUri || baseuri;\n\t if (ourUri) {\n\t if (this.schemas[ourUri]) {\n\t if (!helpers.deepCompareStrict(this.schemas[ourUri], schema)) {\n\t throw new Error('Schema <' + schema + '> already exists with different definition');\n\t }\n\t return this.schemas[ourUri];\n\t }\n\t this.schemas[ourUri] = schema;\n\t var documentUri = ourUri.replace(/^([^#]*)#$/, '$1');\n\t this.schemas[documentUri] = schema;\n\t }\n\t this.addSubSchemaArray(ourBase, schema.items instanceof Array ? schema.items : [schema.items]);\n\t this.addSubSchemaArray(ourBase, schema['extends'] instanceof Array ? schema['extends'] : [schema['extends']]);\n\t this.addSubSchema(ourBase, schema.additionalItems);\n\t this.addSubSchemaObject(ourBase, schema.properties);\n\t this.addSubSchema(ourBase, schema.additionalProperties);\n\t this.addSubSchemaObject(ourBase, schema.definitions);\n\t this.addSubSchemaObject(ourBase, schema.patternProperties);\n\t this.addSubSchemaObject(ourBase, schema.dependencies);\n\t this.addSubSchemaArray(ourBase, schema.disallow);\n\t this.addSubSchemaArray(ourBase, schema.allOf);\n\t this.addSubSchemaArray(ourBase, schema.anyOf);\n\t this.addSubSchemaArray(ourBase, schema.oneOf);\n\t this.addSubSchema(ourBase, schema.not);\n\t return this.schemas[ourUri];\n\t};\n\t\n\tValidator.prototype.addSubSchemaArray = function addSubSchemaArray(baseuri, schemas) {\n\t if (!(schemas instanceof Array)) return;\n\t for (var i = 0; i < schemas.length; i++) {\n\t this.addSubSchema(baseuri, schemas[i]);\n\t }\n\t};\n\t\n\tValidator.prototype.addSubSchemaObject = function addSubSchemaArray(baseuri, schemas) {\n\t if (!schemas || typeof schemas != 'object') return;\n\t for (var p in schemas) {\n\t this.addSubSchema(baseuri, schemas[p]);\n\t }\n\t};\n\t\n\t/**\n\t * Sets all the schemas of the Validator instance.\n\t * @param schemas\n\t */\n\tValidator.prototype.setSchemas = function setSchemas(schemas) {\n\t this.schemas = schemas;\n\t};\n\t\n\t/**\n\t * Returns the schema of a certain urn\n\t * @param urn\n\t */\n\tValidator.prototype.getSchema = function getSchema(urn) {\n\t return this.schemas[urn];\n\t};\n\t\n\t/**\n\t * Validates instance against the provided schema\n\t * @param instance\n\t * @param schema\n\t * @param [options]\n\t * @param [ctx]\n\t * @return {Array}\n\t */\n\tValidator.prototype.validate = function validate(instance, schema, options, ctx) {\n\t if (!options) {\n\t options = {};\n\t }\n\t var propertyName = options.propertyName || 'instance';\n\t // This will work so long as the function at uri.resolve() will resolve a relative URI to a relative URI\n\t var base = urilib.resolve(options.base || '/', schema.id || '');\n\t if (!ctx) {\n\t ctx = new SchemaContext(schema, options, propertyName, base, Object.create(this.schemas));\n\t if (!ctx.schemas[base]) {\n\t ctx.schemas[base] = schema;\n\t }\n\t }\n\t if (schema) {\n\t var result = this.validateSchema(instance, schema, options, ctx);\n\t if (!result) {\n\t throw new Error('Result undefined');\n\t }\n\t return result;\n\t }\n\t throw new SchemaError('no schema specified', schema);\n\t};\n\t\n\t/**\n\t * Validates an instance against the schema (the actual work horse)\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @private\n\t * @return {ValidatorResult}\n\t */\n\tValidator.prototype.validateSchema = function validateSchema(instance, schema, options, ctx) {\n\t var self = this;\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!schema) {\n\t throw new Error(\"schema is undefined\");\n\t }\n\t\n\t /**\n\t * @param Object schema\n\t * @return mixed schema uri or false\n\t */\n\t function shouldResolve(schema) {\n\t var ref = typeof schema === 'string' ? schema : schema.$ref;\n\t if (typeof ref == 'string') return ref;\n\t return false;\n\t }\n\t /**\n\t * @param Object schema\n\t * @param SchemaContext ctx\n\t * @returns Object schema or resolved schema\n\t */\n\t function resolve(schema, ctx) {\n\t var ref;\n\t if (ref = shouldResolve(schema)) {\n\t return self.resolve(schema, ref, ctx).subschema;\n\t }\n\t return schema;\n\t }\n\t\n\t if (schema['extends']) {\n\t if (schema['extends'] instanceof Array) {\n\t schema['extends'].forEach(function (s) {\n\t schema = helpers.deepMerge(schema, resolve(s, ctx));\n\t });\n\t } else {\n\t schema = helpers.deepMerge(schema, resolve(schema['extends'], ctx));\n\t }\n\t }\n\t\n\t var switchSchema;\n\t if (switchSchema = shouldResolve(schema)) {\n\t var resolved = this.resolve(schema, switchSchema, ctx);\n\t var subctx = new SchemaContext(resolved.subschema, options, ctx.propertyPath, resolved.switchSchema, ctx.schemas);\n\t return this.validateSchema(instance, resolved.subschema, options, subctx);\n\t }\n\t\n\t var skipAttributes = options && options.skipAttributes || [];\n\t // Validate each schema attribute against the instance\n\t for (var key in schema) {\n\t if (!attribute.ignoreProperties[key] && skipAttributes.indexOf(key) < 0) {\n\t var validatorErr = null;\n\t var validator = self.attributes[key];\n\t if (validator) {\n\t validatorErr = validator.call(self, instance, schema, options, ctx);\n\t } else if (options.allowUnknownAttributes === false) {\n\t // This represents an error with the schema itself, not an invalid instance\n\t throw new SchemaError(\"Unsupported attribute: \" + key, schema);\n\t }\n\t if (validatorErr) {\n\t result.importErrors(validatorErr);\n\t }\n\t }\n\t }\n\t\n\t if (typeof options.rewrite == 'function') {\n\t var value = options.rewrite.call(this, instance, schema, options, ctx);\n\t result.instance = value;\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t* @private\n\t* @param Object schema\n\t* @param Object switchSchema\n\t* @param SchemaContext ctx\n\t* @return Object resolved schemas {subschema:String, switchSchema: String}\n\t* @thorws SchemaError\n\t*/\n\tValidator.prototype.resolve = function resolve(schema, switchSchema, ctx) {\n\t switchSchema = ctx.resolve(switchSchema);\n\t // First see if the schema exists under the provided URI\n\t if (ctx.schemas[switchSchema]) {\n\t return { subschema: ctx.schemas[switchSchema], switchSchema: switchSchema };\n\t }\n\t // Else try walking the property pointer\n\t var parsed = urilib.parse(switchSchema);\n\t var fragment = parsed && parsed.hash;\n\t var document = fragment && fragment.length && switchSchema.substr(0, switchSchema.length - fragment.length);\n\t if (!document || !ctx.schemas[document]) {\n\t throw new SchemaError(\"no such schema <\" + switchSchema + \">\", schema);\n\t }\n\t var subschema = helpers.objectGetPath(ctx.schemas[document], fragment.substr(1));\n\t if (subschema === undefined) {\n\t throw new SchemaError(\"no such schema \" + fragment + \" located in <\" + document + \">\", schema);\n\t }\n\t return { subschema: subschema, switchSchema: switchSchema };\n\t};\n\t\n\t/**\n\t * Tests whether the instance if of a certain type.\n\t * @private\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @param type\n\t * @return {boolean}\n\t */\n\tValidator.prototype.testType = function validateType(instance, schema, options, ctx, type) {\n\t if (typeof this.types[type] == 'function') {\n\t return this.types[type].call(this, instance);\n\t }\n\t if (type && typeof type == 'object') {\n\t var res = this.validateSchema(instance, type, options, ctx);\n\t return res === undefined || !(res && res.errors.length);\n\t }\n\t // Undefined or properties not on the list are acceptable, same as not being defined\n\t return true;\n\t};\n\t\n\tvar types = Validator.prototype.types = {};\n\ttypes.string = function testString(instance) {\n\t return typeof instance == 'string';\n\t};\n\ttypes.number = function testNumber(instance) {\n\t return typeof instance == 'number';\n\t};\n\ttypes.integer = function testInteger(instance) {\n\t return typeof instance == 'number' && instance % 1 === 0;\n\t};\n\ttypes.boolean = function testBoolean(instance) {\n\t return typeof instance == 'boolean';\n\t};\n\ttypes.number = function testNumber(instance) {\n\t return typeof instance == 'number';\n\t};\n\ttypes.array = function testArray(instance) {\n\t return instance instanceof Array;\n\t};\n\ttypes['null'] = function testNull(instance) {\n\t return instance === null;\n\t};\n\ttypes.date = function testDate(instance) {\n\t return instance instanceof Date;\n\t};\n\ttypes.any = function testAny(instance) {\n\t return true;\n\t};\n\ttypes.object = function testObject(instance) {\n\t // TODO: fix this - see #15\n\t return instance && typeof instance === 'object' && !(instance instanceof Array) && !(instance instanceof Date);\n\t};\n\t\n\tmodule.exports = Validator;\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t\n\t'use strict';\n\t\n\tvar punycode = __webpack_require__(6);\n\t\n\texports.parse = urlParse;\n\texports.resolve = urlResolve;\n\texports.resolveObject = urlResolveObject;\n\texports.format = urlFormat;\n\t\n\texports.Url = Url;\n\t\n\tfunction Url() {\n\t this.protocol = null;\n\t this.slashes = null;\n\t this.auth = null;\n\t this.host = null;\n\t this.port = null;\n\t this.hostname = null;\n\t this.hash = null;\n\t this.search = null;\n\t this.query = null;\n\t this.pathname = null;\n\t this.path = null;\n\t this.href = null;\n\t}\n\t\n\t// Reference: RFC 3986, RFC 1808, RFC 2396\n\t\n\t// define these here so at least they only have to be\n\t// compiled once on the first module load.\n\tvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n\t portPattern = /:[0-9]*$/,\n\t\n\t// RFC 2396: characters reserved for delimiting URLs.\n\t// We actually just auto-escape these.\n\tdelims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\t\n\t// RFC 2396: characters not allowed for various reasons.\n\tunwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\t\n\t// Allowed by RFCs, but cause of XSS attacks. Always escape these.\n\tautoEscape = ['\\''].concat(unwise),\n\t\n\t// Characters that are never ever allowed in a hostname.\n\t// Note that any invalid chars are also handled, but these\n\t// are the ones that are *expected* to be seen, so we fast-path\n\t// them.\n\tnonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n\t hostEndingChars = ['/', '?', '#'],\n\t hostnameMaxLen = 255,\n\t hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,\n\t hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,\n\t\n\t// protocols that can allow \"unsafe\" and \"unwise\" chars.\n\tunsafeProtocol = {\n\t 'javascript': true,\n\t 'javascript:': true\n\t},\n\t\n\t// protocols that never have a hostname.\n\thostlessProtocol = {\n\t 'javascript': true,\n\t 'javascript:': true\n\t},\n\t\n\t// protocols that always contain a // bit.\n\tslashedProtocol = {\n\t 'http': true,\n\t 'https': true,\n\t 'ftp': true,\n\t 'gopher': true,\n\t 'file': true,\n\t 'http:': true,\n\t 'https:': true,\n\t 'ftp:': true,\n\t 'gopher:': true,\n\t 'file:': true\n\t},\n\t querystring = __webpack_require__(8);\n\t\n\tfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n\t if (url && isObject(url) && url instanceof Url) return url;\n\t\n\t var u = new Url();\n\t u.parse(url, parseQueryString, slashesDenoteHost);\n\t return u;\n\t}\n\t\n\tUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n\t if (!isString(url)) {\n\t throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n\t }\n\t\n\t var rest = url;\n\t\n\t // trim before proceeding.\n\t // This is to support parse stuff like \" http://foo.com \\n\"\n\t rest = rest.trim();\n\t\n\t var proto = protocolPattern.exec(rest);\n\t if (proto) {\n\t proto = proto[0];\n\t var lowerProto = proto.toLowerCase();\n\t this.protocol = lowerProto;\n\t rest = rest.substr(proto.length);\n\t }\n\t\n\t // figure out if it's got a host\n\t // user@server is *always* interpreted as a hostname, and url\n\t // resolution will treat //foo/bar as host=foo,path=bar because that's\n\t // how the browser resolves relative URLs.\n\t if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n\t var slashes = rest.substr(0, 2) === '//';\n\t if (slashes && !(proto && hostlessProtocol[proto])) {\n\t rest = rest.substr(2);\n\t this.slashes = true;\n\t }\n\t }\n\t\n\t if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) {\n\t\n\t // there's a hostname.\n\t // the first instance of /, ?, ;, or # ends the host.\n\t //\n\t // If there is an @ in the hostname, then non-host chars *are* allowed\n\t // to the left of the last @ sign, unless some host-ending character\n\t // comes *before* the @-sign.\n\t // URLs are obnoxious.\n\t //\n\t // ex:\n\t // http://a@b@c/ => user:a@b host:c\n\t // http://a@b?@c => user:a host:c path:/?@c\n\t\n\t // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n\t // Review our test case against browsers more comprehensively.\n\t\n\t // find the first instance of any hostEndingChars\n\t var hostEnd = -1;\n\t for (var i = 0; i < hostEndingChars.length; i++) {\n\t var hec = rest.indexOf(hostEndingChars[i]);\n\t if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec;\n\t }\n\t\n\t // at this point, either we have an explicit point where the\n\t // auth portion cannot go past, or the last @ char is the decider.\n\t var auth, atSign;\n\t if (hostEnd === -1) {\n\t // atSign can be anywhere.\n\t atSign = rest.lastIndexOf('@');\n\t } else {\n\t // atSign must be in auth portion.\n\t // http://a@b/c@d => host:b auth:a path:/c@d\n\t atSign = rest.lastIndexOf('@', hostEnd);\n\t }\n\t\n\t // Now we have a portion which is definitely the auth.\n\t // Pull that off.\n\t if (atSign !== -1) {\n\t auth = rest.slice(0, atSign);\n\t rest = rest.slice(atSign + 1);\n\t this.auth = decodeURIComponent(auth);\n\t }\n\t\n\t // the host is the remaining to the left of the first non-host char\n\t hostEnd = -1;\n\t for (var i = 0; i < nonHostChars.length; i++) {\n\t var hec = rest.indexOf(nonHostChars[i]);\n\t if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec;\n\t }\n\t // if we still have not hit it, then the entire thing is a host.\n\t if (hostEnd === -1) hostEnd = rest.length;\n\t\n\t this.host = rest.slice(0, hostEnd);\n\t rest = rest.slice(hostEnd);\n\t\n\t // pull out port.\n\t this.parseHost();\n\t\n\t // we've indicated that there is a hostname,\n\t // so even if it's empty, it has to be present.\n\t this.hostname = this.hostname || '';\n\t\n\t // if hostname begins with [ and ends with ]\n\t // assume that it's an IPv6 address.\n\t var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\t\n\t // validate a little.\n\t if (!ipv6Hostname) {\n\t var hostparts = this.hostname.split(/\\./);\n\t for (var i = 0, l = hostparts.length; i < l; i++) {\n\t var part = hostparts[i];\n\t if (!part) continue;\n\t if (!part.match(hostnamePartPattern)) {\n\t var newpart = '';\n\t for (var j = 0, k = part.length; j < k; j++) {\n\t if (part.charCodeAt(j) > 127) {\n\t // we replace non-ASCII char with a temporary placeholder\n\t // we need this to make sure size of hostname is not\n\t // broken by replacing non-ASCII by nothing\n\t newpart += 'x';\n\t } else {\n\t newpart += part[j];\n\t }\n\t }\n\t // we test again with ASCII char only\n\t if (!newpart.match(hostnamePartPattern)) {\n\t var validParts = hostparts.slice(0, i);\n\t var notHost = hostparts.slice(i + 1);\n\t var bit = part.match(hostnamePartStart);\n\t if (bit) {\n\t validParts.push(bit[1]);\n\t notHost.unshift(bit[2]);\n\t }\n\t if (notHost.length) {\n\t rest = '/' + notHost.join('.') + rest;\n\t }\n\t this.hostname = validParts.join('.');\n\t break;\n\t }\n\t }\n\t }\n\t }\n\t\n\t if (this.hostname.length > hostnameMaxLen) {\n\t this.hostname = '';\n\t } else {\n\t // hostnames are always lower case.\n\t this.hostname = this.hostname.toLowerCase();\n\t }\n\t\n\t if (!ipv6Hostname) {\n\t // IDNA Support: Returns a puny coded representation of \"domain\".\n\t // It only converts the part of the domain name that\n\t // has non ASCII characters. I.e. it dosent matter if\n\t // you call it with a domain that already is in ASCII.\n\t var domainArray = this.hostname.split('.');\n\t var newOut = [];\n\t for (var i = 0; i < domainArray.length; ++i) {\n\t var s = domainArray[i];\n\t newOut.push(s.match(/[^A-Za-z0-9_-]/) ? 'xn--' + punycode.encode(s) : s);\n\t }\n\t this.hostname = newOut.join('.');\n\t }\n\t\n\t var p = this.port ? ':' + this.port : '';\n\t var h = this.hostname || '';\n\t this.host = h + p;\n\t this.href += this.host;\n\t\n\t // strip [ and ] from the hostname\n\t // the host field still retains them, though\n\t if (ipv6Hostname) {\n\t this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n\t if (rest[0] !== '/') {\n\t rest = '/' + rest;\n\t }\n\t }\n\t }\n\t\n\t // now rest is set to the post-host stuff.\n\t // chop off any delim chars.\n\t if (!unsafeProtocol[lowerProto]) {\n\t\n\t // First, make 100% sure that any \"autoEscape\" chars get\n\t // escaped, even if encodeURIComponent doesn't think they\n\t // need to be.\n\t for (var i = 0, l = autoEscape.length; i < l; i++) {\n\t var ae = autoEscape[i];\n\t var esc = encodeURIComponent(ae);\n\t if (esc === ae) {\n\t esc = escape(ae);\n\t }\n\t rest = rest.split(ae).join(esc);\n\t }\n\t }\n\t\n\t // chop off from the tail first.\n\t var hash = rest.indexOf('#');\n\t if (hash !== -1) {\n\t // got a fragment string.\n\t this.hash = rest.substr(hash);\n\t rest = rest.slice(0, hash);\n\t }\n\t var qm = rest.indexOf('?');\n\t if (qm !== -1) {\n\t this.search = rest.substr(qm);\n\t this.query = rest.substr(qm + 1);\n\t if (parseQueryString) {\n\t this.query = querystring.parse(this.query);\n\t }\n\t rest = rest.slice(0, qm);\n\t } else if (parseQueryString) {\n\t // no query string, but parseQueryString still requested\n\t this.search = '';\n\t this.query = {};\n\t }\n\t if (rest) this.pathname = rest;\n\t if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n\t this.pathname = '/';\n\t }\n\t\n\t //to support http.request\n\t if (this.pathname || this.search) {\n\t var p = this.pathname || '';\n\t var s = this.search || '';\n\t this.path = p + s;\n\t }\n\t\n\t // finally, reconstruct the href based on what has been validated.\n\t this.href = this.format();\n\t return this;\n\t};\n\t\n\t// format a parsed object into a url string\n\tfunction urlFormat(obj) {\n\t // ensure it's an object, and not a string url.\n\t // If it's an obj, this is a no-op.\n\t // this way, you can call url_format() on strings\n\t // to clean up potentially wonky urls.\n\t if (isString(obj)) obj = urlParse(obj);\n\t if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n\t return obj.format();\n\t}\n\t\n\tUrl.prototype.format = function () {\n\t var auth = this.auth || '';\n\t if (auth) {\n\t auth = encodeURIComponent(auth);\n\t auth = auth.replace(/%3A/i, ':');\n\t auth += '@';\n\t }\n\t\n\t var protocol = this.protocol || '',\n\t pathname = this.pathname || '',\n\t hash = this.hash || '',\n\t host = false,\n\t query = '';\n\t\n\t if (this.host) {\n\t host = auth + this.host;\n\t } else if (this.hostname) {\n\t host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n\t if (this.port) {\n\t host += ':' + this.port;\n\t }\n\t }\n\t\n\t if (this.query && isObject(this.query) && Object.keys(this.query).length) {\n\t query = querystring.stringify(this.query);\n\t }\n\t\n\t var search = this.search || query && '?' + query || '';\n\t\n\t if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\t\n\t // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n\t // unless they had them to begin with.\n\t if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n\t host = '//' + (host || '');\n\t if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n\t } else if (!host) {\n\t host = '';\n\t }\n\t\n\t if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n\t if (search && search.charAt(0) !== '?') search = '?' + search;\n\t\n\t pathname = pathname.replace(/[?#]/g, function (match) {\n\t return encodeURIComponent(match);\n\t });\n\t search = search.replace('#', '%23');\n\t\n\t return protocol + host + pathname + search + hash;\n\t};\n\t\n\tfunction urlResolve(source, relative) {\n\t return urlParse(source, false, true).resolve(relative);\n\t}\n\t\n\tUrl.prototype.resolve = function (relative) {\n\t return this.resolveObject(urlParse(relative, false, true)).format();\n\t};\n\t\n\tfunction urlResolveObject(source, relative) {\n\t if (!source) return relative;\n\t return urlParse(source, false, true).resolveObject(relative);\n\t}\n\t\n\tUrl.prototype.resolveObject = function (relative) {\n\t if (isString(relative)) {\n\t var rel = new Url();\n\t rel.parse(relative, false, true);\n\t relative = rel;\n\t }\n\t\n\t var result = new Url();\n\t Object.keys(this).forEach(function (k) {\n\t result[k] = this[k];\n\t }, this);\n\t\n\t // hash is always overridden, no matter what.\n\t // even href=\"\" will remove it.\n\t result.hash = relative.hash;\n\t\n\t // if the relative url is empty, then there's nothing left to do here.\n\t if (relative.href === '') {\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t // hrefs like //foo/bar always cut to the protocol.\n\t if (relative.slashes && !relative.protocol) {\n\t // take everything except the protocol from relative\n\t Object.keys(relative).forEach(function (k) {\n\t if (k !== 'protocol') result[k] = relative[k];\n\t });\n\t\n\t //urlParse appends trailing / to urls like http://www.example.com\n\t if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n\t result.path = result.pathname = '/';\n\t }\n\t\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t if (relative.protocol && relative.protocol !== result.protocol) {\n\t // if it's a known url protocol, then changing\n\t // the protocol does weird things\n\t // first, if it's not file:, then we MUST have a host,\n\t // and if there was a path\n\t // to begin with, then we MUST have a path.\n\t // if it is file:, then the host is dropped,\n\t // because that's known to be hostless.\n\t // anything else is assumed to be absolute.\n\t if (!slashedProtocol[relative.protocol]) {\n\t Object.keys(relative).forEach(function (k) {\n\t result[k] = relative[k];\n\t });\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t result.protocol = relative.protocol;\n\t if (!relative.host && !hostlessProtocol[relative.protocol]) {\n\t var relPath = (relative.pathname || '').split('/');\n\t while (relPath.length && !(relative.host = relPath.shift()));\n\t if (!relative.host) relative.host = '';\n\t if (!relative.hostname) relative.hostname = '';\n\t if (relPath[0] !== '') relPath.unshift('');\n\t if (relPath.length < 2) relPath.unshift('');\n\t result.pathname = relPath.join('/');\n\t } else {\n\t result.pathname = relative.pathname;\n\t }\n\t result.search = relative.search;\n\t result.query = relative.query;\n\t result.host = relative.host || '';\n\t result.auth = relative.auth;\n\t result.hostname = relative.hostname || relative.host;\n\t result.port = relative.port;\n\t // to support http.request\n\t if (result.pathname || result.search) {\n\t var p = result.pathname || '';\n\t var s = result.search || '';\n\t result.path = p + s;\n\t }\n\t result.slashes = result.slashes || relative.slashes;\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n\t isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n\t mustEndAbs = isRelAbs || isSourceAbs || result.host && relative.pathname,\n\t removeAllDots = mustEndAbs,\n\t srcPath = result.pathname && result.pathname.split('/') || [],\n\t relPath = relative.pathname && relative.pathname.split('/') || [],\n\t psychotic = result.protocol && !slashedProtocol[result.protocol];\n\t\n\t // if the url is a non-slashed url, then relative\n\t // links like ../.. should be able\n\t // to crawl up to the hostname, as well. This is strange.\n\t // result.protocol has already been set by now.\n\t // Later on, put the first path part into the host field.\n\t if (psychotic) {\n\t result.hostname = '';\n\t result.port = null;\n\t if (result.host) {\n\t if (srcPath[0] === '') srcPath[0] = result.host;else srcPath.unshift(result.host);\n\t }\n\t result.host = '';\n\t if (relative.protocol) {\n\t relative.hostname = null;\n\t relative.port = null;\n\t if (relative.host) {\n\t if (relPath[0] === '') relPath[0] = relative.host;else relPath.unshift(relative.host);\n\t }\n\t relative.host = null;\n\t }\n\t mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n\t }\n\t\n\t if (isRelAbs) {\n\t // it's absolute.\n\t result.host = relative.host || relative.host === '' ? relative.host : result.host;\n\t result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n\t result.search = relative.search;\n\t result.query = relative.query;\n\t srcPath = relPath;\n\t // fall through to the dot-handling below.\n\t } else if (relPath.length) {\n\t // it's relative\n\t // throw away the existing file, and take the new path instead.\n\t if (!srcPath) srcPath = [];\n\t srcPath.pop();\n\t srcPath = srcPath.concat(relPath);\n\t result.search = relative.search;\n\t result.query = relative.query;\n\t } else if (!isNullOrUndefined(relative.search)) {\n\t // just pull out the search.\n\t // like href='?foo'.\n\t // Put this after the other two cases because it simplifies the booleans\n\t if (psychotic) {\n\t result.hostname = result.host = srcPath.shift();\n\t //occationaly the auth can get stuck only in host\n\t //this especialy happens in cases like\n\t //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n\t var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n\t if (authInHost) {\n\t result.auth = authInHost.shift();\n\t result.host = result.hostname = authInHost.shift();\n\t }\n\t }\n\t result.search = relative.search;\n\t result.query = relative.query;\n\t //to support http.request\n\t if (!isNull(result.pathname) || !isNull(result.search)) {\n\t result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n\t }\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t if (!srcPath.length) {\n\t // no path at all. easy.\n\t // we've already handled the other stuff above.\n\t result.pathname = null;\n\t //to support http.request\n\t if (result.search) {\n\t result.path = '/' + result.search;\n\t } else {\n\t result.path = null;\n\t }\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t // if a url ENDs in . or .., then it must get a trailing slash.\n\t // however, if it ends in anything else non-slashy,\n\t // then it must NOT get a trailing slash.\n\t var last = srcPath.slice(-1)[0];\n\t var hasTrailingSlash = (result.host || relative.host) && (last === '.' || last === '..') || last === '';\n\t\n\t // strip single dots, resolve double dots to parent dir\n\t // if the path tries to go above the root, `up` ends up > 0\n\t var up = 0;\n\t for (var i = srcPath.length; i >= 0; i--) {\n\t last = srcPath[i];\n\t if (last == '.') {\n\t srcPath.splice(i, 1);\n\t } else if (last === '..') {\n\t srcPath.splice(i, 1);\n\t up++;\n\t } else if (up) {\n\t srcPath.splice(i, 1);\n\t up--;\n\t }\n\t }\n\t\n\t // if the path is allowed to go above the root, restore leading ..s\n\t if (!mustEndAbs && !removeAllDots) {\n\t for (; up--; up) {\n\t srcPath.unshift('..');\n\t }\n\t }\n\t\n\t if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n\t srcPath.unshift('');\n\t }\n\t\n\t if (hasTrailingSlash && srcPath.join('/').substr(-1) !== '/') {\n\t srcPath.push('');\n\t }\n\t\n\t var isAbsolute = srcPath[0] === '' || srcPath[0] && srcPath[0].charAt(0) === '/';\n\t\n\t // put the host back\n\t if (psychotic) {\n\t result.hostname = result.host = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n\t //occationaly the auth can get stuck only in host\n\t //this especialy happens in cases like\n\t //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n\t var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n\t if (authInHost) {\n\t result.auth = authInHost.shift();\n\t result.host = result.hostname = authInHost.shift();\n\t }\n\t }\n\t\n\t mustEndAbs = mustEndAbs || result.host && srcPath.length;\n\t\n\t if (mustEndAbs && !isAbsolute) {\n\t srcPath.unshift('');\n\t }\n\t\n\t if (!srcPath.length) {\n\t result.pathname = null;\n\t result.path = null;\n\t } else {\n\t result.pathname = srcPath.join('/');\n\t }\n\t\n\t //to support request.http\n\t if (!isNull(result.pathname) || !isNull(result.search)) {\n\t result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n\t }\n\t result.auth = relative.auth || result.auth;\n\t result.slashes = result.slashes || relative.slashes;\n\t result.href = result.format();\n\t return result;\n\t};\n\t\n\tUrl.prototype.parseHost = function () {\n\t var host = this.host;\n\t var port = portPattern.exec(host);\n\t if (port) {\n\t port = port[0];\n\t if (port !== ':') {\n\t this.port = port.substr(1);\n\t }\n\t host = host.substr(0, host.length - port.length);\n\t }\n\t if (host) this.hostname = host;\n\t};\n\t\n\tfunction isString(arg) {\n\t return typeof arg === \"string\";\n\t}\n\t\n\tfunction isObject(arg) {\n\t return typeof arg === 'object' && arg !== null;\n\t}\n\t\n\tfunction isNull(arg) {\n\t return arg === null;\n\t}\n\tfunction isNullOrUndefined(arg) {\n\t return arg == null;\n\t}\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/*! https://mths.be/punycode v1.3.2 by @mathias */\n\t'use strict';\n\t\n\t;(function (root) {\n\t\n\t\t/** Detect free variables */\n\t\tvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\t\tvar freeModule = typeof module == 'object' && module && !module.nodeType && module;\n\t\tvar freeGlobal = typeof global == 'object' && global;\n\t\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal) {\n\t\t\troot = freeGlobal;\n\t\t}\n\t\n\t\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\t\tvar punycode,\n\t\t \n\t\n\t\t/** Highest positive signed 32-bit float value */\n\t\tmaxInt = 2147483647,\n\t\t // aka. 0x7FFFFFFF or 2^31-1\n\t\n\t\t/** Bootstring parameters */\n\t\tbase = 36,\n\t\t tMin = 1,\n\t\t tMax = 26,\n\t\t skew = 38,\n\t\t damp = 700,\n\t\t initialBias = 72,\n\t\t initialN = 128,\n\t\t // 0x80\n\t\tdelimiter = '-',\n\t\t // '\\x2D'\n\t\n\t\t/** Regular expressions */\n\t\tregexPunycode = /^xn--/,\n\t\t regexNonASCII = /[^\\x20-\\x7E]/,\n\t\t // unprintable ASCII chars + non-ASCII chars\n\t\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g,\n\t\t // RFC 3490 separators\n\t\n\t\t/** Error messages */\n\t\terrors = {\n\t\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t\t'invalid-input': 'Invalid input'\n\t\t},\n\t\t \n\t\n\t\t/** Convenience shortcuts */\n\t\tbaseMinusTMin = base - tMin,\n\t\t floor = Math.floor,\n\t\t stringFromCharCode = String.fromCharCode,\n\t\t \n\t\n\t\t/** Temporary variable */\n\t\tkey;\n\t\n\t\t/*--------------------------------------------------------------------------*/\n\t\n\t\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\t\tfunction error(type) {\n\t\t\tthrow RangeError(errors[type]);\n\t\t}\n\t\n\t\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\t\tfunction map(array, fn) {\n\t\t\tvar length = array.length;\n\t\t\tvar result = [];\n\t\t\twhile (length--) {\n\t\t\t\tresult[length] = fn(array[length]);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t\n\t\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\t\tfunction mapDomain(string, fn) {\n\t\t\tvar parts = string.split('@');\n\t\t\tvar result = '';\n\t\t\tif (parts.length > 1) {\n\t\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\t\tresult = parts[0] + '@';\n\t\t\t\tstring = parts[1];\n\t\t\t}\n\t\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\t\tvar labels = string.split('.');\n\t\t\tvar encoded = map(labels, fn).join('.');\n\t\t\treturn result + encoded;\n\t\t}\n\t\n\t\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\t\tfunction ucs2decode(string) {\n\t\t\tvar output = [],\n\t\t\t counter = 0,\n\t\t\t length = string.length,\n\t\t\t value,\n\t\t\t extra;\n\t\t\twhile (counter < length) {\n\t\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t\t\t// low surrogate\n\t\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\t\toutput.push(value);\n\t\t\t\t\t\tcounter--;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\toutput.push(value);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\n\t\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\t\tfunction ucs2encode(array) {\n\t\t\treturn map(array, function (value) {\n\t\t\t\tvar output = '';\n\t\t\t\tif (value > 0xFFFF) {\n\t\t\t\t\tvalue -= 0x10000;\n\t\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t\t}\n\t\t\t\toutput += stringFromCharCode(value);\n\t\t\t\treturn output;\n\t\t\t}).join('');\n\t\t}\n\t\n\t\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\t\tfunction basicToDigit(codePoint) {\n\t\t\tif (codePoint - 48 < 10) {\n\t\t\t\treturn codePoint - 22;\n\t\t\t}\n\t\t\tif (codePoint - 65 < 26) {\n\t\t\t\treturn codePoint - 65;\n\t\t\t}\n\t\t\tif (codePoint - 97 < 26) {\n\t\t\t\treturn codePoint - 97;\n\t\t\t}\n\t\t\treturn base;\n\t\t}\n\t\n\t\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\t\tfunction digitToBasic(digit, flag) {\n\t\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t\t// 26..35 map to ASCII 0..9\n\t\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t\t}\n\t\n\t\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\t\tfunction adapt(delta, numPoints, firstTime) {\n\t\t\tvar k = 0;\n\t\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\t\tdelta += floor(delta / numPoints);\n\t\t\tfor (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t\t}\n\t\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t\t}\n\t\n\t\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\t\tfunction decode(input) {\n\t\t\t// Don't use UCS-2\n\t\t\tvar output = [],\n\t\t\t inputLength = input.length,\n\t\t\t out,\n\t\t\t i = 0,\n\t\t\t n = initialN,\n\t\t\t bias = initialBias,\n\t\t\t basic,\n\t\t\t j,\n\t\t\t index,\n\t\t\t oldi,\n\t\t\t w,\n\t\t\t k,\n\t\t\t digit,\n\t\t\t t,\n\t\t\t \n\t\t\t/** Cached calculation results */\n\t\t\tbaseMinusT;\n\t\n\t\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t\t// the first basic code points to the output.\n\t\n\t\t\tbasic = input.lastIndexOf(delimiter);\n\t\t\tif (basic < 0) {\n\t\t\t\tbasic = 0;\n\t\t\t}\n\t\n\t\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t\t// if it's not a basic code point\n\t\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\t\terror('not-basic');\n\t\t\t\t}\n\t\t\t\toutput.push(input.charCodeAt(j));\n\t\t\t}\n\t\n\t\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t\t// points were copied; start at the beginning otherwise.\n\t\n\t\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{\n\t\n\t\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t\t// value at the end to obtain `delta`.\n\t\t\t\tfor (oldi = i, w = 1, k = base;; /* no condition */k += base) {\n\t\n\t\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\t\terror('invalid-input');\n\t\t\t\t\t}\n\t\n\t\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\t\n\t\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\t\terror('overflow');\n\t\t\t\t\t}\n\t\n\t\t\t\t\ti += digit * w;\n\t\t\t\t\tt = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\t\n\t\t\t\t\tif (digit < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\t\terror('overflow');\n\t\t\t\t\t}\n\t\n\t\t\t\t\tw *= baseMinusT;\n\t\t\t\t}\n\t\n\t\t\t\tout = output.length + 1;\n\t\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\t\n\t\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\t\n\t\t\t\tn += floor(i / out);\n\t\t\t\ti %= out;\n\t\n\t\t\t\t// Insert `n` at position `i` of the output\n\t\t\t\toutput.splice(i++, 0, n);\n\t\t\t}\n\t\n\t\t\treturn ucs2encode(output);\n\t\t}\n\t\n\t\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\t\tfunction encode(input) {\n\t\t\tvar n,\n\t\t\t delta,\n\t\t\t handledCPCount,\n\t\t\t basicLength,\n\t\t\t bias,\n\t\t\t j,\n\t\t\t m,\n\t\t\t q,\n\t\t\t k,\n\t\t\t t,\n\t\t\t currentValue,\n\t\t\t output = [],\n\t\t\t \n\t\t\t/** `inputLength` will hold the number of code points in `input`. */\n\t\t\tinputLength,\n\t\t\t \n\t\t\t/** Cached calculation results */\n\t\t\thandledCPCountPlusOne,\n\t\t\t baseMinusT,\n\t\t\t qMinusT;\n\t\n\t\t\t// Convert the input in UCS-2 to Unicode\n\t\t\tinput = ucs2decode(input);\n\t\n\t\t\t// Cache the length\n\t\t\tinputLength = input.length;\n\t\n\t\t\t// Initialize the state\n\t\t\tn = initialN;\n\t\t\tdelta = 0;\n\t\t\tbias = initialBias;\n\t\n\t\t\t// Handle the basic code points\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue < 0x80) {\n\t\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\thandledCPCount = basicLength = output.length;\n\t\n\t\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t\t// `basicLength` is the number of basic code points.\n\t\n\t\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\t\tif (basicLength) {\n\t\t\t\toutput.push(delimiter);\n\t\t\t}\n\t\n\t\t\t// Main encoding loop:\n\t\t\twhile (handledCPCount < inputLength) {\n\t\n\t\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t\t// larger one:\n\t\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\t\tcurrentValue = input[j];\n\t\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\t\tm = currentValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t\t// but guard against overflow\n\t\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\t\n\t\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\t\tn = m;\n\t\n\t\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\t\tcurrentValue = input[j];\n\t\n\t\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\t\terror('overflow');\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\t\tfor (q = delta, k = base;; /* no condition */k += base) {\n\t\t\t\t\t\t\tt = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\t\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n\t\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\t\tdelta = 0;\n\t\t\t\t\t\t++handledCPCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t++delta;\n\t\t\t\t++n;\n\t\t\t}\n\t\t\treturn output.join('');\n\t\t}\n\t\n\t\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\t\tfunction toUnicode(input) {\n\t\t\treturn mapDomain(input, function (string) {\n\t\t\t\treturn regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n\t\t\t});\n\t\t}\n\t\n\t\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\t\tfunction toASCII(input) {\n\t\t\treturn mapDomain(input, function (string) {\n\t\t\t\treturn regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n\t\t\t});\n\t\t}\n\t\n\t\t/*--------------------------------------------------------------------------*/\n\t\n\t\t/** Define the public API */\n\t\tpunycode = {\n\t\t\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t\t\t'version': '1.3.2',\n\t\t\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t\t\t'ucs2': {\n\t\t\t\t'decode': ucs2decode,\n\t\t\t\t'encode': ucs2encode\n\t\t\t},\n\t\t\t'decode': decode,\n\t\t\t'encode': encode,\n\t\t\t'toASCII': toASCII,\n\t\t\t'toUnicode': toUnicode\n\t\t};\n\t\n\t\t/** Expose `punycode` */\n\t\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t\t// like the following:\n\t\tif (true) {\n\t\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t\t\t\treturn punycode;\n\t\t\t}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t\t} else if (freeExports && freeModule) {\n\t\t\tif (module.exports == freeExports) {\n\t\t\t\t// in Node.js or RingoJS v0.8.0+\n\t\t\t\tfreeModule.exports = punycode;\n\t\t\t} else {\n\t\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\t\tfor (key in punycode) {\n\t\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// in Rhino or a web browser\n\t\t\troot.punycode = punycode;\n\t\t}\n\t})(undefined);\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)(module), (function() { return this; }())))\n\n/***/ },\n/* 7 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function (module) {\n\t\tif (!module.webpackPolyfill) {\n\t\t\tmodule.deprecate = function () {};\n\t\t\tmodule.paths = [];\n\t\t\t// module.parent = undefined by default\n\t\t\tmodule.children = [];\n\t\t\tmodule.webpackPolyfill = 1;\n\t\t}\n\t\treturn module;\n\t};\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.decode = exports.parse = __webpack_require__(9);\n\texports.encode = exports.stringify = __webpack_require__(10);\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t\n\t'use strict';\n\t\n\t// If obj.hasOwnProperty has been overridden, then calling\n\t// obj.hasOwnProperty(prop) will break.\n\t// See: https://github.com/joyent/node/issues/1707\n\tfunction hasOwnProperty(obj, prop) {\n\t return Object.prototype.hasOwnProperty.call(obj, prop);\n\t}\n\t\n\tmodule.exports = function (qs, sep, eq, options) {\n\t sep = sep || '&';\n\t eq = eq || '=';\n\t var obj = {};\n\t\n\t if (typeof qs !== 'string' || qs.length === 0) {\n\t return obj;\n\t }\n\t\n\t var regexp = /\\+/g;\n\t qs = qs.split(sep);\n\t\n\t var maxKeys = 1000;\n\t if (options && typeof options.maxKeys === 'number') {\n\t maxKeys = options.maxKeys;\n\t }\n\t\n\t var len = qs.length;\n\t // maxKeys <= 0 means that we should not limit keys count\n\t if (maxKeys > 0 && len > maxKeys) {\n\t len = maxKeys;\n\t }\n\t\n\t for (var i = 0; i < len; ++i) {\n\t var x = qs[i].replace(regexp, '%20'),\n\t idx = x.indexOf(eq),\n\t kstr,\n\t vstr,\n\t k,\n\t v;\n\t\n\t if (idx >= 0) {\n\t kstr = x.substr(0, idx);\n\t vstr = x.substr(idx + 1);\n\t } else {\n\t kstr = x;\n\t vstr = '';\n\t }\n\t\n\t k = decodeURIComponent(kstr);\n\t v = decodeURIComponent(vstr);\n\t\n\t if (!hasOwnProperty(obj, k)) {\n\t obj[k] = v;\n\t } else if (Array.isArray(obj[k])) {\n\t obj[k].push(v);\n\t } else {\n\t obj[k] = [obj[k], v];\n\t }\n\t }\n\t\n\t return obj;\n\t};\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t\n\t'use strict';\n\t\n\tvar stringifyPrimitive = function stringifyPrimitive(v) {\n\t switch (typeof v) {\n\t case 'string':\n\t return v;\n\t\n\t case 'boolean':\n\t return v ? 'true' : 'false';\n\t\n\t case 'number':\n\t return isFinite(v) ? v : '';\n\t\n\t default:\n\t return '';\n\t }\n\t};\n\t\n\tmodule.exports = function (obj, sep, eq, name) {\n\t sep = sep || '&';\n\t eq = eq || '=';\n\t if (obj === null) {\n\t obj = undefined;\n\t }\n\t\n\t if (typeof obj === 'object') {\n\t return Object.keys(obj).map(function (k) {\n\t var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n\t if (Array.isArray(obj[k])) {\n\t return obj[k].map(function (v) {\n\t return ks + encodeURIComponent(stringifyPrimitive(v));\n\t }).join(sep);\n\t } else {\n\t return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n\t }\n\t }).join(sep);\n\t }\n\t\n\t if (!name) return '';\n\t return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj));\n\t};\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar helpers = __webpack_require__(12);\n\t\n\t/** @type ValidatorResult */\n\tvar ValidatorResult = helpers.ValidatorResult;\n\t/** @type SchemaError */\n\tvar SchemaError = helpers.SchemaError;\n\t\n\tvar attribute = {};\n\t\n\tattribute.ignoreProperties = {\n\t // informative properties\n\t 'id': true,\n\t 'default': true,\n\t 'description': true,\n\t 'title': true,\n\t // arguments to other properties\n\t 'exclusiveMinimum': true,\n\t 'exclusiveMaximum': true,\n\t 'additionalItems': true,\n\t // special-handled properties\n\t '$schema': true,\n\t '$ref': true,\n\t 'extends': true\n\t};\n\t\n\t/**\n\t * @name validators\n\t */\n\tvar validators = attribute.validators = {};\n\t\n\t/**\n\t * Validates whether the instance if of a certain type\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {ValidatorResult|null}\n\t */\n\tvalidators.type = function validateType(instance, schema, options, ctx) {\n\t // Ignore undefined instances\n\t if (instance === undefined) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var types = schema.type instanceof Array ? schema.type : [schema.type];\n\t if (!types.some(this.testType.bind(this, instance, schema, options, ctx))) {\n\t var list = types.map(function (v) {\n\t return v.id && '<' + v.id + '>' || v + '';\n\t });\n\t result.addError({\n\t name: 'type',\n\t argument: list,\n\t message: \"is not of a type(s) \" + list\n\t });\n\t }\n\t return result;\n\t};\n\t\n\tfunction testSchema(instance, options, ctx, schema) {\n\t return this.validateSchema(instance, schema, options, ctx).valid;\n\t}\n\t\n\t/**\n\t * Validates whether the instance matches some of the given schemas\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {ValidatorResult|null}\n\t */\n\tvalidators.anyOf = function validateAnyOf(instance, schema, options, ctx) {\n\t // Ignore undefined instances\n\t if (instance === undefined) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(schema.anyOf instanceof Array)) {\n\t throw new SchemaError(\"anyOf must be an array\");\n\t }\n\t if (!schema.anyOf.some(testSchema.bind(this, instance, options, ctx))) {\n\t var list = schema.anyOf.map(function (v, i) {\n\t return v.id && '<' + v.id + '>' || v.title && JSON.stringify(v.title) || v['$ref'] && '<' + v['$ref'] + '>' || '[subschema ' + i + ']';\n\t });\n\t result.addError({\n\t name: 'anyOf',\n\t argument: list,\n\t message: \"is not any of \" + list.join(',')\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance matches every given schema\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null}\n\t */\n\tvalidators.allOf = function validateAllOf(instance, schema, options, ctx) {\n\t // Ignore undefined instances\n\t if (instance === undefined) {\n\t return null;\n\t }\n\t if (!(schema.allOf instanceof Array)) {\n\t throw new SchemaError(\"allOf must be an array\");\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var self = this;\n\t schema.allOf.forEach(function (v, i) {\n\t var valid = self.validateSchema(instance, v, options, ctx);\n\t if (!valid.valid) {\n\t var msg = v.id && '<' + v.id + '>' || v.title && JSON.stringify(v.title) || v['$ref'] && '<' + v['$ref'] + '>' || '[subschema ' + i + ']';\n\t result.addError({\n\t name: 'allOf',\n\t argument: { id: msg, length: valid.errors.length, valid: valid },\n\t message: 'does not match allOf schema ' + msg + ' with ' + valid.errors.length + ' error[s]:'\n\t });\n\t result.importErrors(valid);\n\t }\n\t });\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance matches exactly one of the given schemas\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null}\n\t */\n\tvalidators.oneOf = function validateOneOf(instance, schema, options, ctx) {\n\t // Ignore undefined instances\n\t if (instance === undefined) {\n\t return null;\n\t }\n\t if (!(schema.oneOf instanceof Array)) {\n\t throw new SchemaError(\"oneOf must be an array\");\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var count = schema.oneOf.filter(testSchema.bind(this, instance, options, ctx)).length;\n\t var list = schema.oneOf.map(function (v, i) {\n\t return v.id && '<' + v.id + '>' || v.title && JSON.stringify(v.title) || v['$ref'] && '<' + v['$ref'] + '>' || '[subschema ' + i + ']';\n\t });\n\t if (count !== 1) {\n\t result.addError({\n\t name: 'oneOf',\n\t argument: list,\n\t message: \"is not exactly one from \" + list.join(',')\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates properties\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null|ValidatorResult}\n\t */\n\tvalidators.properties = function validateProperties(instance, schema, options, ctx) {\n\t if (instance === undefined || !(instance instanceof Object)) return;\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var properties = schema.properties || {};\n\t for (var property in properties) {\n\t var prop = (instance || undefined) && instance[property];\n\t var res = this.validateSchema(prop, properties[property], options, ctx.makeChild(properties[property], property));\n\t if (res.instance !== result.instance[property]) result.instance[property] = res.instance;\n\t result.importErrors(res);\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Test a specific property within in instance against the additionalProperties schema attribute\n\t * This ignores properties with definitions in the properties schema attribute, but no other attributes.\n\t * If too many more types of property-existance tests pop up they may need their own class of tests (like `type` has)\n\t * @private\n\t * @return {boolean}\n\t */\n\tfunction testAdditionalProperty(instance, schema, options, ctx, property, result) {\n\t if (schema.properties && schema.properties[property] !== undefined) {\n\t return;\n\t }\n\t if (schema.additionalProperties === false) {\n\t result.addError({\n\t name: 'additionalProperties',\n\t argument: property,\n\t message: \"additionalProperty \" + JSON.stringify(property) + \" exists in instance when not allowed\"\n\t });\n\t } else {\n\t var additionalProperties = schema.additionalProperties || {};\n\t var res = this.validateSchema(instance[property], additionalProperties, options, ctx.makeChild(additionalProperties, property));\n\t if (res.instance !== result.instance[property]) result.instance[property] = res.instance;\n\t result.importErrors(res);\n\t }\n\t}\n\t\n\t/**\n\t * Validates patternProperties\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null|ValidatorResult}\n\t */\n\tvalidators.patternProperties = function validatePatternProperties(instance, schema, options, ctx) {\n\t if (instance === undefined) return;\n\t if (!this.types.object(instance)) return;\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var patternProperties = schema.patternProperties || {};\n\t\n\t for (var property in instance) {\n\t var test = true;\n\t for (var pattern in patternProperties) {\n\t var expr = new RegExp(pattern);\n\t if (!expr.test(property)) {\n\t continue;\n\t }\n\t test = false;\n\t var res = this.validateSchema(instance[property], patternProperties[pattern], options, ctx.makeChild(patternProperties[pattern], property));\n\t if (res.instance !== result.instance[property]) result.instance[property] = res.instance;\n\t result.importErrors(res);\n\t }\n\t if (test) {\n\t testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n\t }\n\t }\n\t\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates additionalProperties\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null|ValidatorResult}\n\t */\n\tvalidators.additionalProperties = function validateAdditionalProperties(instance, schema, options, ctx) {\n\t if (instance === undefined) return;\n\t if (!this.types.object(instance)) return;\n\t // if patternProperties is defined then we'll test when that one is called instead\n\t if (schema.patternProperties) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t for (var property in instance) {\n\t testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.minProperties = function validateMinProperties(instance, schema, options, ctx) {\n\t if (!instance || typeof instance !== 'object') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var keys = Object.keys(instance);\n\t if (!(keys.length >= schema.minProperties)) {\n\t result.addError({\n\t name: 'minProperties',\n\t argument: schema.minProperties,\n\t message: \"does not meet minimum property length of \" + schema.minProperties\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.maxProperties = function validateMaxProperties(instance, schema, options, ctx) {\n\t if (!instance || typeof instance !== 'object') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var keys = Object.keys(instance);\n\t if (!(keys.length <= schema.maxProperties)) {\n\t result.addError({\n\t name: 'maxProperties',\n\t argument: schema.maxProperties,\n\t message: \"does not meet maximum property length of \" + schema.maxProperties\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates items when instance is an array\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null|ValidatorResult}\n\t */\n\tvalidators.items = function validateItems(instance, schema, options, ctx) {\n\t if (!(instance instanceof Array)) {\n\t return null;\n\t }\n\t var self = this;\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (instance === undefined || !schema.items) {\n\t return result;\n\t }\n\t instance.every(function (value, i) {\n\t var items = schema.items instanceof Array ? schema.items[i] || schema.additionalItems : schema.items;\n\t if (items === undefined) {\n\t return true;\n\t }\n\t if (items === false) {\n\t result.addError({\n\t name: 'items',\n\t message: \"additionalItems not permitted\"\n\t });\n\t return false;\n\t }\n\t var res = self.validateSchema(value, items, options, ctx.makeChild(items, i));\n\t if (res.instance !== result.instance[i]) result.instance[i] = res.instance;\n\t result.importErrors(res);\n\t return true;\n\t });\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates minimum and exclusiveMinimum when the type of the instance value is a number.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.minimum = function validateMinimum(instance, schema, options, ctx) {\n\t if (typeof instance !== 'number') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var valid = true;\n\t if (schema.exclusiveMinimum && schema.exclusiveMinimum === true) {\n\t valid = instance > schema.minimum;\n\t } else {\n\t valid = instance >= schema.minimum;\n\t }\n\t if (!valid) {\n\t result.addError({\n\t name: 'minimum',\n\t argument: schema.minimum,\n\t message: \"must have a minimum value of \" + schema.minimum\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates maximum and exclusiveMaximum when the type of the instance value is a number.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.maximum = function validateMaximum(instance, schema, options, ctx) {\n\t if (typeof instance !== 'number') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var valid;\n\t if (schema.exclusiveMaximum && schema.exclusiveMaximum === true) {\n\t valid = instance < schema.maximum;\n\t } else {\n\t valid = instance <= schema.maximum;\n\t }\n\t if (!valid) {\n\t result.addError({\n\t name: 'maximum',\n\t argument: schema.maximum,\n\t message: \"must have a maximum value of \" + schema.maximum\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates divisibleBy when the type of the instance value is a number.\n\t * Of course, this is susceptible to floating point error since it compares the floating points\n\t * and not the JSON byte sequences to arbitrary precision.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.divisibleBy = function validateDivisibleBy(instance, schema, options, ctx) {\n\t if (typeof instance !== 'number') {\n\t return null;\n\t }\n\t\n\t if (schema.divisibleBy == 0) {\n\t throw new SchemaError(\"divisibleBy cannot be zero\");\n\t }\n\t\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (instance / schema.divisibleBy % 1) {\n\t result.addError({\n\t name: 'divisibleBy',\n\t argument: schema.divisibleBy,\n\t message: \"is not divisible by (multiple of) \" + JSON.stringify(schema.divisibleBy)\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates divisibleBy when the type of the instance value is a number.\n\t * Of course, this is susceptible to floating point error since it compares the floating points\n\t * and not the JSON byte sequences to arbitrary precision.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.multipleOf = function validateMultipleOf(instance, schema, options, ctx) {\n\t if (typeof instance !== 'number') {\n\t return null;\n\t }\n\t\n\t if (schema.multipleOf == 0) {\n\t throw new SchemaError(\"multipleOf cannot be zero\");\n\t }\n\t\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (instance / schema.multipleOf % 1) {\n\t result.addError({\n\t name: 'multipleOf',\n\t argument: schema.multipleOf,\n\t message: \"is not a multiple of (divisible by) \" + JSON.stringify(schema.multipleOf)\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is present.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.required = function validateRequired(instance, schema, options, ctx) {\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (instance === undefined && schema.required === true) {\n\t result.addError({\n\t name: 'required',\n\t message: \"is required\"\n\t });\n\t } else if (instance && typeof instance === 'object' && Array.isArray(schema.required)) {\n\t schema.required.forEach(function (n) {\n\t if (instance[n] === undefined) {\n\t result.addError({\n\t name: 'required',\n\t argument: n,\n\t message: \"requires property \" + JSON.stringify(n)\n\t });\n\t }\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value matches the regular expression, when the instance value is a string.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.pattern = function validatePattern(instance, schema, options, ctx) {\n\t if (typeof instance !== 'string') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!instance.match(schema.pattern)) {\n\t result.addError({\n\t name: 'pattern',\n\t argument: schema.pattern,\n\t message: \"does not match pattern \" + JSON.stringify(schema.pattern)\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is of a certain defined format, when the instance value is a string.\n\t * The following format are supported:\n\t * - date-time\n\t * - date\n\t * - time\n\t * - ip-address\n\t * - ipv6\n\t * - uri\n\t * - color\n\t * - host-name\n\t * - alpha\n\t * - alpha-numeric\n\t * - utc-millisec\n\t * @param instance\n\t * @param schema\n\t * @param [options]\n\t * @param [ctx]\n\t * @return {String|null}\n\t */\n\tvalidators.format = function validateFormat(instance, schema, options, ctx) {\n\t if (!(typeof instance === 'string')) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!helpers.isFormat(instance, schema.format)) {\n\t result.addError({\n\t name: 'format',\n\t argument: schema.format,\n\t message: \"does not conform to the \" + JSON.stringify(schema.format) + \" format\"\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.minLength = function validateMinLength(instance, schema, options, ctx) {\n\t if (!(typeof instance === 'string')) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(instance.length >= schema.minLength)) {\n\t result.addError({\n\t name: 'minLength',\n\t argument: schema.minLength,\n\t message: \"does not meet minimum length of \" + schema.minLength\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.maxLength = function validateMaxLength(instance, schema, options, ctx) {\n\t if (!(typeof instance === 'string')) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(instance.length <= schema.maxLength)) {\n\t result.addError({\n\t name: 'maxLength',\n\t argument: schema.maxLength,\n\t message: \"does not meet maximum length of \" + schema.maxLength\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether instance contains at least a minimum number of items, when the instance is an Array.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.minItems = function validateMinItems(instance, schema, options, ctx) {\n\t if (!(instance instanceof Array)) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(instance.length >= schema.minItems)) {\n\t result.addError({\n\t name: 'minItems',\n\t argument: schema.minItems,\n\t message: \"does not meet minimum length of \" + schema.minItems\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether instance contains no more than a maximum number of items, when the instance is an Array.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.maxItems = function validateMaxItems(instance, schema, options, ctx) {\n\t if (!(instance instanceof Array)) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(instance.length <= schema.maxItems)) {\n\t result.addError({\n\t name: 'maxItems',\n\t argument: schema.maxItems,\n\t message: \"does not meet maximum length of \" + schema.maxItems\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates that every item in an instance array is unique, when instance is an array\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null|ValidatorResult}\n\t */\n\tvalidators.uniqueItems = function validateUniqueItems(instance, schema, options, ctx) {\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(instance instanceof Array)) {\n\t return result;\n\t }\n\t function testArrays(v, i, a) {\n\t for (var j = i + 1; j < a.length; j++) if (helpers.deepCompareStrict(v, a[j])) {\n\t return false;\n\t }\n\t return true;\n\t }\n\t if (!instance.every(testArrays)) {\n\t result.addError({\n\t name: 'uniqueItems',\n\t message: \"contains duplicate item\"\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Deep compares arrays for duplicates\n\t * @param v\n\t * @param i\n\t * @param a\n\t * @private\n\t * @return {boolean}\n\t */\n\tfunction testArrays(v, i, a) {\n\t var j,\n\t len = a.length;\n\t for (j = i + 1, len; j < len; j++) {\n\t if (helpers.deepCompareStrict(v, a[j])) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t}\n\t\n\t/**\n\t * Validates whether there are no duplicates, when the instance is an Array.\n\t * @param instance\n\t * @return {String|null}\n\t */\n\tvalidators.uniqueItems = function validateUniqueItems(instance, schema, options, ctx) {\n\t if (!(instance instanceof Array)) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!instance.every(testArrays)) {\n\t result.addError({\n\t name: 'uniqueItems',\n\t message: \"contains duplicate item\"\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validate for the presence of dependency properties, if the instance is an object.\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {null|ValidatorResult}\n\t */\n\tvalidators.dependencies = function validateDependencies(instance, schema, options, ctx) {\n\t if (!instance || typeof instance != 'object') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t for (var property in schema.dependencies) {\n\t if (instance[property] === undefined) {\n\t continue;\n\t }\n\t var dep = schema.dependencies[property];\n\t var childContext = ctx.makeChild(dep, property);\n\t if (typeof dep == 'string') {\n\t dep = [dep];\n\t }\n\t if (dep instanceof Array) {\n\t dep.forEach(function (prop) {\n\t if (instance[prop] === undefined) {\n\t result.addError({\n\t // FIXME there's two different \"dependencies\" errors here with slightly different outputs\n\t // Can we make these the same? Or should we create different error types?\n\t name: 'dependencies',\n\t argument: childContext.propertyPath,\n\t message: \"property \" + prop + \" not found, required by \" + childContext.propertyPath\n\t });\n\t }\n\t });\n\t } else {\n\t var res = this.validateSchema(instance, dep, options, childContext);\n\t if (result.instance !== res.instance) result.instance = res.instance;\n\t if (res && res.errors.length) {\n\t result.addError({\n\t name: 'dependencies',\n\t argument: childContext.propertyPath,\n\t message: \"does not meet dependency required by \" + childContext.propertyPath\n\t });\n\t result.importErrors(res);\n\t }\n\t }\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is one of the enumerated values.\n\t *\n\t * @param instance\n\t * @param schema\n\t * @return {ValidatorResult|null}\n\t */\n\tvalidators['enum'] = function validateEnum(instance, schema, options, ctx) {\n\t if (!(schema['enum'] instanceof Array)) {\n\t throw new SchemaError(\"enum expects an array\", schema);\n\t }\n\t if (instance === undefined) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!schema['enum'].some(helpers.deepCompareStrict.bind(null, instance))) {\n\t result.addError({\n\t name: 'enum',\n\t argument: schema['enum'],\n\t message: \"is not one of enum values: \" + schema['enum'].join(',')\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance if of a prohibited type.\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {null|ValidatorResult}\n\t */\n\tvalidators.not = validators.disallow = function validateNot(instance, schema, options, ctx) {\n\t var self = this;\n\t if (instance === undefined) return null;\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var notTypes = schema.not || schema.disallow;\n\t if (!notTypes) return null;\n\t if (!(notTypes instanceof Array)) notTypes = [notTypes];\n\t notTypes.forEach(function (type) {\n\t if (self.testType(instance, schema, options, ctx, type)) {\n\t var schemaId = type && type.id && '<' + type.id + '>' || type;\n\t result.addError({\n\t name: 'not',\n\t argument: schemaId,\n\t message: \"is of prohibited type \" + schemaId\n\t });\n\t }\n\t });\n\t return result;\n\t};\n\t\n\tmodule.exports = attribute;\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar uri = __webpack_require__(5);\n\t\n\tvar ValidationError = exports.ValidationError = function ValidationError(message, instance, schema, propertyPath, name, argument) {\n\t if (propertyPath) {\n\t this.property = propertyPath;\n\t }\n\t if (message) {\n\t this.message = message;\n\t }\n\t if (schema) {\n\t if (schema.id) {\n\t this.schema = schema.id;\n\t } else {\n\t this.schema = schema;\n\t }\n\t }\n\t if (instance) {\n\t this.instance = instance;\n\t }\n\t this.name = name;\n\t this.argument = argument;\n\t this.stack = this.toString();\n\t};\n\t\n\tValidationError.prototype.toString = function toString() {\n\t return this.property + ' ' + this.message;\n\t};\n\t\n\tvar ValidatorResult = exports.ValidatorResult = function ValidatorResult(instance, schema, options, ctx) {\n\t this.instance = instance;\n\t this.schema = schema;\n\t this.propertyPath = ctx.propertyPath;\n\t this.errors = [];\n\t this.throwError = options && options.throwError;\n\t};\n\t\n\tValidatorResult.prototype.addError = function addError(detail) {\n\t var err;\n\t if (typeof detail == 'string') {\n\t err = new ValidationError(detail, this.instance, this.schema, this.propertyPath);\n\t } else {\n\t if (!detail) throw new Error('Missing error detail');\n\t if (!detail.message) throw new Error('Missing error message');\n\t if (!detail.name) throw new Error('Missing validator type');\n\t err = new ValidationError(detail.message, this.instance, this.schema, this.propertyPath, detail.name, detail.argument);\n\t }\n\t\n\t if (this.throwError) {\n\t throw err;\n\t }\n\t this.errors.push(err);\n\t return err;\n\t};\n\t\n\tValidatorResult.prototype.importErrors = function importErrors(res) {\n\t if (typeof res == 'string' || res && res.validatorType) {\n\t this.addError(res);\n\t } else if (res && res.errors) {\n\t var errs = this.errors;\n\t res.errors.forEach(function (v) {\n\t errs.push(v);\n\t });\n\t }\n\t};\n\t\n\tValidatorResult.prototype.toString = function toString(res) {\n\t return this.errors.map(function (v, i) {\n\t return i + ': ' + v.toString() + '\\n';\n\t }).join('');\n\t};\n\t\n\tObject.defineProperty(ValidatorResult.prototype, \"valid\", { get: function get() {\n\t return !this.errors.length;\n\t } });\n\t\n\t/**\n\t * Describes a problem with a Schema which prevents validation of an instance\n\t * @name SchemaError\n\t * @constructor\n\t */\n\tvar SchemaError = exports.SchemaError = function SchemaError(msg, schema) {\n\t this.message = msg;\n\t this.schema = schema;\n\t Error.call(this, msg);\n\t Error.captureStackTrace(this, SchemaError);\n\t};\n\tSchemaError.prototype = Object.create(Error.prototype, { constructor: { value: SchemaError, enumerable: false },\n\t name: { value: 'SchemaError', enumerable: false }\n\t});\n\t\n\tvar SchemaContext = exports.SchemaContext = function SchemaContext(schema, options, propertyPath, base, schemas) {\n\t this.schema = schema;\n\t this.options = options;\n\t this.propertyPath = propertyPath;\n\t this.base = base;\n\t this.schemas = schemas;\n\t};\n\t\n\tSchemaContext.prototype.resolve = function resolve(target) {\n\t return uri.resolve(this.base, target);\n\t};\n\t\n\tSchemaContext.prototype.makeChild = function makeChild(schema, propertyName) {\n\t var propertyPath = propertyName === undefined ? this.propertyPath : this.propertyPath + makeSuffix(propertyName);\n\t var base = uri.resolve(this.base, schema.id || '');\n\t var ctx = new SchemaContext(schema, this.options, propertyPath, base, Object.create(this.schemas));\n\t if (schema.id && !ctx.schemas[base]) {\n\t ctx.schemas[base] = schema;\n\t }\n\t return ctx;\n\t};\n\t\n\tvar FORMAT_REGEXPS = exports.FORMAT_REGEXPS = {\n\t 'date-time': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}[tT ]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([zZ]|[+-]\\d{2}:\\d{2})$/,\n\t 'date': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}$/,\n\t 'time': /^\\d{2}:\\d{2}:\\d{2}$/,\n\t\n\t 'email': /^(?:[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+\\.)*[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$/,\n\t 'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n\t 'ipv6': /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/,\n\t 'uri': /^[a-zA-Z][a-zA-Z0-9+-.]*:[^\\s]*$/,\n\t\n\t 'color': /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/,\n\t\n\t // hostname regex from: http://stackoverflow.com/a/1420225/5628\n\t 'hostname': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\t 'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\t\n\t 'alpha': /^[a-zA-Z]+$/,\n\t 'alphanumeric': /^[a-zA-Z0-9]+$/,\n\t 'utc-millisec': function utcMillisec(input) {\n\t return typeof input === 'string' && parseFloat(input) === parseInt(input, 10) && !isNaN(input);\n\t },\n\t 'regex': function regex(input) {\n\t var result = true;\n\t try {\n\t new RegExp(input);\n\t } catch (e) {\n\t result = false;\n\t }\n\t return result;\n\t },\n\t 'style': /\\s*(.+?):\\s*([^;]+);?/g,\n\t 'phone': /^\\+(?:[0-9] ?){6,14}[0-9]$/\n\t};\n\t\n\tFORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;\n\tFORMAT_REGEXPS.pattern = FORMAT_REGEXPS.regex;\n\tFORMAT_REGEXPS.ipv4 = FORMAT_REGEXPS['ip-address'];\n\t\n\texports.isFormat = function isFormat(input, format) {\n\t if (FORMAT_REGEXPS[format] !== undefined) {\n\t if (FORMAT_REGEXPS[format] instanceof RegExp) {\n\t return FORMAT_REGEXPS[format].test(input);\n\t }\n\t if (typeof FORMAT_REGEXPS[format] === 'function') {\n\t return FORMAT_REGEXPS[format](input);\n\t }\n\t }\n\t return false;\n\t};\n\t\n\tvar makeSuffix = exports.makeSuffix = function makeSuffix(key) {\n\t key = key.toString();\n\t // This function could be capable of outputting valid a ECMAScript string, but the\n\t // resulting code for testing which form to use would be tens of thousands of characters long\n\t // That means this will use the name form for some illegal forms\n\t if (!key.match(/[.\\s\\[\\]]/) && !key.match(/^[\\d]/)) {\n\t return '.' + key;\n\t }\n\t if (key.match(/^\\d+$/)) {\n\t return '[' + key + ']';\n\t }\n\t return '[' + JSON.stringify(key) + ']';\n\t};\n\t\n\texports.deepCompareStrict = function deepCompareStrict(a, b) {\n\t if (typeof a !== typeof b) {\n\t return false;\n\t }\n\t if (a instanceof Array) {\n\t if (!(b instanceof Array)) {\n\t return false;\n\t }\n\t if (a.length !== b.length) {\n\t return false;\n\t }\n\t return a.every(function (v, i) {\n\t return deepCompareStrict(a[i], b[i]);\n\t });\n\t }\n\t if (typeof a === 'object') {\n\t if (!a || !b) {\n\t return a === b;\n\t }\n\t var aKeys = Object.keys(a);\n\t var bKeys = Object.keys(b);\n\t if (aKeys.length !== bKeys.length) {\n\t return false;\n\t }\n\t return aKeys.every(function (v) {\n\t return deepCompareStrict(a[v], b[v]);\n\t });\n\t }\n\t return a === b;\n\t};\n\t\n\tmodule.exports.deepMerge = function deepMerge(target, src) {\n\t var array = Array.isArray(src);\n\t var dst = array && [] || {};\n\t\n\t if (array) {\n\t target = target || [];\n\t dst = dst.concat(target);\n\t src.forEach(function (e, i) {\n\t if (typeof e === 'object') {\n\t dst[i] = deepMerge(target[i], e);\n\t } else {\n\t if (target.indexOf(e) === -1) {\n\t dst.push(e);\n\t }\n\t }\n\t });\n\t } else {\n\t if (target && typeof target === 'object') {\n\t Object.keys(target).forEach(function (key) {\n\t dst[key] = target[key];\n\t });\n\t }\n\t Object.keys(src).forEach(function (key) {\n\t if (typeof src[key] !== 'object' || !src[key]) {\n\t dst[key] = src[key];\n\t } else {\n\t if (!target[key]) {\n\t dst[key] = src[key];\n\t } else {\n\t dst[key] = deepMerge(target[key], src[key]);\n\t }\n\t }\n\t });\n\t }\n\t\n\t return dst;\n\t};\n\t\n\t/**\n\t * Validates instance against the provided schema\n\t * Implements URI+JSON Pointer encoding, e.g. \"%7e\"=\"~0\"=>\"~\", \"~1\"=\"%2f\"=>\"/\"\n\t * @param o\n\t * @param s The path to walk o along\n\t * @return any\n\t */\n\texports.objectGetPath = function objectGetPath(o, s) {\n\t var parts = s.split('/').slice(1);\n\t var k;\n\t while (typeof (k = parts.shift()) == 'string') {\n\t var n = decodeURIComponent(k.replace(/~0/, '~').replace(/~1/g, '/'));\n\t if (!(n in o)) return;\n\t o = o[n];\n\t }\n\t return o;\n\t};\n\t\n\t/**\n\t * Accept an Array of property names and return a JSON Pointer URI fragment\n\t * @param Array a\n\t * @return {String}\n\t */\n\texports.encodePath = function encodePointer(a) {\n\t // ~ must be encoded explicitly because hacks\n\t // the slash is encoded by encodeURIComponent\n\t return a.map(function (v) {\n\t return '/' + encodeURIComponent(v).replace(/~/g, '%7E');\n\t }).join('');\n\t};\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.defaultTypeValue = defaultTypeValue;\n\texports.defaultFieldValue = defaultFieldValue;\n\texports.getAlternativeWidget = getAlternativeWidget;\n\texports.getDefaultFormState = getDefaultFormState;\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _componentsWidgetsRadioWidget = __webpack_require__(14);\n\t\n\tvar _componentsWidgetsRadioWidget2 = _interopRequireDefault(_componentsWidgetsRadioWidget);\n\t\n\tvar _componentsWidgetsSelectWidget = __webpack_require__(16);\n\t\n\tvar _componentsWidgetsSelectWidget2 = _interopRequireDefault(_componentsWidgetsSelectWidget);\n\t\n\tvar _componentsWidgetsTextareaWidget = __webpack_require__(17);\n\t\n\tvar _componentsWidgetsTextareaWidget2 = _interopRequireDefault(_componentsWidgetsTextareaWidget);\n\t\n\tfunction defaultTypeValue(type) {\n\t switch (type) {\n\t case \"array\":\n\t return [];\n\t case \"boolean\":\n\t return false;\n\t case \"date-time\":\n\t return \"\";\n\t case \"number\":\n\t return 0;\n\t case \"object\":\n\t return {};\n\t case \"string\":\n\t return \"\";\n\t default:\n\t return undefined;\n\t }\n\t}\n\t\n\tfunction defaultFieldValue(formData, schema) {\n\t return formData === null ? defaultTypeValue(schema.type) : formData;\n\t}\n\t\n\tfunction getAlternativeWidget(name) {\n\t switch (name) {\n\t case \"radio\":\n\t return _componentsWidgetsRadioWidget2[\"default\"];\n\t case \"select\":\n\t return _componentsWidgetsSelectWidget2[\"default\"];\n\t case \"textarea\":\n\t return _componentsWidgetsTextareaWidget2[\"default\"];\n\t default:\n\t throw new Error(\"No alternative widget for \\\"\" + name + \"\\\"\");\n\t }\n\t}\n\t\n\tfunction getDefaultFormState(schema) {\n\t if (typeof schema !== \"object\") {\n\t throw new Error(\"Invalid schema: \" + schema);\n\t }\n\t if (\"default\" in schema) {\n\t return schema[\"default\"];\n\t }\n\t if (schema.type === \"object\") {\n\t return Object.keys(schema.properties).reduce(function (acc, key) {\n\t acc[key] = getDefaultFormState(schema.properties[key]);\n\t return acc;\n\t }, {});\n\t }\n\t return defaultTypeValue(schema.type);\n\t}\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _widgetsWrapper = __webpack_require__(15);\n\t\n\tvar _widgetsWrapper2 = _interopRequireDefault(_widgetsWrapper);\n\t\n\tfunction RadioWidget(_ref) {\n\t var type = _ref.type;\n\t var options = _ref.options;\n\t var label = _ref.label;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t\n\t // Generating a unique field name to identify this set of radio buttons\n\t var name = Math.random().toString();\n\t return _react2[\"default\"].createElement(\n\t _widgetsWrapper2[\"default\"],\n\t { type: type, label: label },\n\t options.map(function (option, i) {\n\t var checked = value !== undefined ? option === value : option === defaultValue;\n\t return _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"field-radio-group\", key: i },\n\t _react2[\"default\"].createElement(\n\t \"label\",\n\t null,\n\t _react2[\"default\"].createElement(\"input\", { type: \"radio\",\n\t name: name,\n\t value: option,\n\t checked: checked,\n\t placeholder: placeholder,\n\t onChange: function (_) {\n\t return onChange(option);\n\t } }),\n\t String(option)\n\t )\n\t );\n\t })\n\t );\n\t}\n\t\n\tif (false) {\n\t RadioWidget.propTypes = {\n\t type: _react.PropTypes.string.isRequired,\n\t options: _react.PropTypes.array.isRequired,\n\t label: _react.PropTypes.string,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.any,\n\t defaultValue: _react.PropTypes.any,\n\t required: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\texports[\"default\"] = RadioWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar REQUIRED_FIELD_SYMBOL = \"*\";\n\t\n\tfunction getLabel(label, required) {\n\t if (!label) {\n\t return null;\n\t }\n\t if (required) {\n\t return label + REQUIRED_FIELD_SYMBOL;\n\t }\n\t return label;\n\t}\n\t\n\tfunction Wrapper(_ref) {\n\t var type = _ref.type;\n\t var children = _ref.children;\n\t var label = _ref.label;\n\t var required = _ref.required;\n\t\n\t return _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"field field-\" + type },\n\t _react2[\"default\"].createElement(\n\t \"label\",\n\t null,\n\t getLabel(label, required),\n\t children\n\t )\n\t );\n\t}\n\t\n\tif (false) {\n\t Wrapper.propTypes = {\n\t type: _react.PropTypes.string.isRequired,\n\t label: _react.PropTypes.string,\n\t required: _react.PropTypes.bool,\n\t children: _react2[\"default\"].PropTypes.node.isRequired\n\t };\n\t}\n\t\n\texports[\"default\"] = Wrapper;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _widgetsWrapper = __webpack_require__(15);\n\t\n\tvar _widgetsWrapper2 = _interopRequireDefault(_widgetsWrapper);\n\t\n\t/**\n\t * This is a silly limitation in the DOM where option change event values are\n\t * always retrieved as strings.\n\t */\n\tfunction processValue(type, value) {\n\t if (type === \"boolean\") {\n\t return value === \"true\";\n\t } else if (type === \"number\") {\n\t return value === Number(value);\n\t }\n\t return value;\n\t}\n\t\n\tfunction SelectWidget(_ref) {\n\t var type = _ref.type;\n\t var options = _ref.options;\n\t var label = _ref.label;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t\n\t return _react2[\"default\"].createElement(\n\t _widgetsWrapper2[\"default\"],\n\t { label: label, required: required, type: type },\n\t _react2[\"default\"].createElement(\n\t \"select\",\n\t {\n\t title: placeholder,\n\t value: value,\n\t defaultValue: defaultValue,\n\t onChange: function (event) {\n\t return onChange(processValue(type, event.target.value));\n\t } },\n\t options.map(function (option, i) {\n\t return _react2[\"default\"].createElement(\n\t \"option\",\n\t { key: i, value: option },\n\t String(option)\n\t );\n\t })\n\t )\n\t );\n\t}\n\t\n\tif (false) {\n\t SelectWidget.propTypes = {\n\t type: _react.PropTypes.string.isRequired,\n\t options: _react.PropTypes.array.isRequired,\n\t label: _react.PropTypes.string,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.any,\n\t defaultValue: _react.PropTypes.any,\n\t required: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = SelectWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _widgetsWrapper = __webpack_require__(15);\n\t\n\tvar _widgetsWrapper2 = _interopRequireDefault(_widgetsWrapper);\n\t\n\tfunction TextWidget(_ref) {\n\t var type = _ref.type;\n\t var label = _ref.label;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t\n\t return _react2[\"default\"].createElement(\n\t _widgetsWrapper2[\"default\"],\n\t { label: label, required: required, type: type },\n\t _react2[\"default\"].createElement(\"textarea\", {\n\t value: value,\n\t defaultValue: defaultValue,\n\t placeholder: placeholder,\n\t required: required,\n\t onChange: function (event) {\n\t return onChange(event.target.value);\n\t } })\n\t );\n\t}\n\t\n\tif (false) {\n\t TextWidget.propTypes = {\n\t type: _react.PropTypes.string.isRequired,\n\t label: _react.PropTypes.string,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.string,\n\t defaultValue: _react.PropTypes.string,\n\t required: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = TextWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _StringField = __webpack_require__(19);\n\t\n\tvar _StringField2 = _interopRequireDefault(_StringField);\n\t\n\tvar _ArrayField = __webpack_require__(21);\n\t\n\tvar _ArrayField2 = _interopRequireDefault(_ArrayField);\n\t\n\tvar _BooleanField = __webpack_require__(22);\n\t\n\tvar _BooleanField2 = _interopRequireDefault(_BooleanField);\n\t\n\tvar _ObjectField = __webpack_require__(24);\n\t\n\tvar _ObjectField2 = _interopRequireDefault(_ObjectField);\n\t\n\tvar _UnsupportedField = __webpack_require__(25);\n\t\n\tvar _UnsupportedField2 = _interopRequireDefault(_UnsupportedField);\n\t\n\tvar COMPONENT_TYPES = {\n\t \"string\": _StringField2[\"default\"],\n\t \"array\": _ArrayField2[\"default\"],\n\t \"boolean\": _BooleanField2[\"default\"],\n\t \"object\": _ObjectField2[\"default\"],\n\t \"date-time\": _StringField2[\"default\"],\n\t \"number\": _StringField2[\"default\"]\n\t};\n\t\n\tfunction SchemaField(props) {\n\t var FieldComponent = COMPONENT_TYPES[props.schema.type] || _UnsupportedField2[\"default\"];\n\t return _react2[\"default\"].createElement(FieldComponent, props);\n\t}\n\t\n\tif (false) {\n\t SchemaField.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t uiSchema: _react.PropTypes.object\n\t };\n\t}\n\t\n\texports[\"default\"] = SchemaField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _utils = __webpack_require__(13);\n\t\n\tvar _widgetsTextWidget = __webpack_require__(20);\n\t\n\tvar _widgetsTextWidget2 = _interopRequireDefault(_widgetsTextWidget);\n\t\n\tvar _widgetsSelectWidget = __webpack_require__(16);\n\t\n\tvar _widgetsSelectWidget2 = _interopRequireDefault(_widgetsSelectWidget);\n\t\n\tfunction StringField(_ref) {\n\t var schema = _ref.schema;\n\t var uiSchema = _ref.uiSchema;\n\t var formData = _ref.formData;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t var type = schema.type;\n\t var title = schema.title;\n\t var description = schema.description;\n\t var widget = uiSchema.widget;\n\t\n\t var commonProps = {\n\t type: type,\n\t label: title,\n\t placeholder: description,\n\t onChange: onChange,\n\t value: (0, _utils.defaultFieldValue)(formData, schema),\n\t required: required,\n\t defaultValue: schema[\"default\"]\n\t };\n\t if (Array.isArray(schema[\"enum\"])) {\n\t if (widget) {\n\t var Widget = (0, _utils.getAlternativeWidget)(widget);\n\t return _react2[\"default\"].createElement(Widget, _extends({ options: schema[\"enum\"] }, commonProps));\n\t }\n\t return _react2[\"default\"].createElement(_widgetsSelectWidget2[\"default\"], _extends({ options: schema[\"enum\"] }, commonProps));\n\t }\n\t if (widget) {\n\t var Widget = (0, _utils.getAlternativeWidget)(widget);\n\t return _react2[\"default\"].createElement(Widget, commonProps);\n\t }\n\t return _react2[\"default\"].createElement(_widgetsTextWidget2[\"default\"], commonProps);\n\t}\n\t\n\tif (false) {\n\t StringField.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t onChange: _react.PropTypes.func.isRequired,\n\t formData: _react.PropTypes.string,\n\t required: _react.PropTypes.bool\n\t };\n\t}\n\t\n\tStringField.defaultProps = {\n\t uiSchema: {}\n\t};\n\t\n\texports[\"default\"] = StringField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _widgetsWrapper = __webpack_require__(15);\n\t\n\tvar _widgetsWrapper2 = _interopRequireDefault(_widgetsWrapper);\n\t\n\tfunction TextWidget(_ref) {\n\t var type = _ref.type;\n\t var label = _ref.label;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t\n\t return _react2[\"default\"].createElement(\n\t _widgetsWrapper2[\"default\"],\n\t { label: label, required: required, type: type },\n\t _react2[\"default\"].createElement(\"input\", { type: \"text\",\n\t value: value,\n\t defaultValue: defaultValue,\n\t placeholder: placeholder,\n\t required: required,\n\t onChange: function (event) {\n\t return onChange(event.target.value);\n\t } })\n\t );\n\t}\n\t\n\tif (false) {\n\t TextWidget.propTypes = {\n\t type: _react.PropTypes.string.isRequired,\n\t label: _react.PropTypes.string,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.string,\n\t defaultValue: _react.PropTypes.string,\n\t required: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = TextWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _utils = __webpack_require__(13);\n\t\n\tvar _SchemaField = __webpack_require__(18);\n\t\n\tvar _SchemaField2 = _interopRequireDefault(_SchemaField);\n\t\n\tvar ArrayField = (function (_Component) {\n\t _inherits(ArrayField, _Component);\n\t\n\t _createClass(ArrayField, null, [{\n\t key: \"defaultProps\",\n\t value: {\n\t uiSchema: {}\n\t },\n\t enumerable: true\n\t }]);\n\t\n\t function ArrayField(props) {\n\t _classCallCheck(this, ArrayField);\n\t\n\t _get(Object.getPrototypeOf(ArrayField.prototype), \"constructor\", this).call(this, props);\n\t this.state = this.getStateFromProps(props);\n\t }\n\t\n\t _createClass(ArrayField, [{\n\t key: \"componentWillReceiveProps\",\n\t value: function componentWillReceiveProps(nextProps) {\n\t this.setState(this.getStateFromProps(nextProps));\n\t }\n\t }, {\n\t key: \"getStateFromProps\",\n\t value: function getStateFromProps(props) {\n\t var formData = Array.isArray(props.formData) ? props.formData : null;\n\t return { items: formData || (0, _utils.getDefaultFormState)(props.schema) || [] };\n\t }\n\t }, {\n\t key: \"isItemRequired\",\n\t value: function isItemRequired(itemsSchema) {\n\t return itemsSchema.type === \"string\" && itemsSchema.minLength > 0;\n\t }\n\t }, {\n\t key: \"asyncSetState\",\n\t value: function asyncSetState(state, options) {\n\t var _this = this;\n\t\n\t // ensure state is propagated to parent component when it's actually set\n\t this.setState(state, function (_) {\n\t return _this.props.onChange(_this.state.items, options);\n\t });\n\t }\n\t }, {\n\t key: \"onAddClick\",\n\t value: function onAddClick(event) {\n\t event.preventDefault();\n\t var items = this.state.items;\n\t var schema = this.props.schema;\n\t\n\t this.asyncSetState({\n\t items: items.concat((0, _utils.getDefaultFormState)(schema.items))\n\t }, { validate: false });\n\t }\n\t }, {\n\t key: \"onDropClick\",\n\t value: function onDropClick(index, event) {\n\t event.preventDefault();\n\t this.asyncSetState({\n\t items: this.state.items.filter(function (_, i) {\n\t return i !== index;\n\t })\n\t }, { validate: false });\n\t }\n\t }, {\n\t key: \"onChange\",\n\t value: function onChange(index, value) {\n\t this.asyncSetState({\n\t items: this.state.items.map(function (item, i) {\n\t return index === i ? value : item;\n\t })\n\t }, { validate: false });\n\t }\n\t }, {\n\t key: \"render\",\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _props = this.props;\n\t var schema = _props.schema;\n\t var uiSchema = _props.uiSchema;\n\t var items = this.state.items;\n\t\n\t return _react2[\"default\"].createElement(\n\t \"fieldset\",\n\t {\n\t className: \"field field-array field-array-of-\" + schema.items.type },\n\t _react2[\"default\"].createElement(\n\t \"legend\",\n\t null,\n\t schema.title\n\t ),\n\t schema.description ? _react2[\"default\"].createElement(\n\t \"div\",\n\t null,\n\t schema.description\n\t ) : null,\n\t _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"array-item-list\" },\n\t items.map(function (item, index) {\n\t return _react2[\"default\"].createElement(\n\t \"div\",\n\t { key: index },\n\t _react2[\"default\"].createElement(_SchemaField2[\"default\"], {\n\t schema: schema.items,\n\t uiSchema: uiSchema.items,\n\t formData: items[index],\n\t required: _this2.isItemRequired(schema.items),\n\t onChange: _this2.onChange.bind(_this2, index) }),\n\t _react2[\"default\"].createElement(\n\t \"p\",\n\t { className: \"array-item-remove\" },\n\t _react2[\"default\"].createElement(\n\t \"button\",\n\t { type: \"button\",\n\t onClick: _this2.onDropClick.bind(_this2, index) },\n\t \"-\"\n\t )\n\t )\n\t );\n\t })\n\t ),\n\t _react2[\"default\"].createElement(\n\t \"p\",\n\t { className: \"array-item-add\" },\n\t _react2[\"default\"].createElement(\n\t \"button\",\n\t { type: \"button\", onClick: this.onAddClick.bind(this) },\n\t \"+\"\n\t )\n\t )\n\t );\n\t }\n\t }, {\n\t key: \"itemTitle\",\n\t get: function get() {\n\t var schema = this.props.schema;\n\t\n\t return schema.items.title || schema.items.description || \"Item\";\n\t }\n\t }]);\n\t\n\t return ArrayField;\n\t})(_react.Component);\n\t\n\tif (false) {\n\t ArrayField.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t uiSchema: _react.PropTypes.object,\n\t onChange: _react.PropTypes.func.isRequired,\n\t formData: _react.PropTypes.array\n\t };\n\t}\n\t\n\texports[\"default\"] = ArrayField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _utils = __webpack_require__(13);\n\t\n\tvar _widgetsCheckboxWidget = __webpack_require__(23);\n\t\n\tvar _widgetsCheckboxWidget2 = _interopRequireDefault(_widgetsCheckboxWidget);\n\t\n\tfunction BooleanField(_ref) {\n\t var schema = _ref.schema;\n\t var uiSchema = _ref.uiSchema;\n\t var formData = _ref.formData;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t var title = schema.title;\n\t var description = schema.description;\n\t var widget = uiSchema.widget;\n\t\n\t var commonProps = {\n\t type: schema.type,\n\t onChange: onChange,\n\t label: title,\n\t placeholder: description,\n\t defaultValue: schema[\"default\"],\n\t value: (0, _utils.defaultFieldValue)(formData, schema),\n\t required: required\n\t };\n\t if (widget) {\n\t var Widget = (0, _utils.getAlternativeWidget)(widget);\n\t return _react2[\"default\"].createElement(Widget, _extends({ options: [true, false] }, commonProps));\n\t }\n\t return _react2[\"default\"].createElement(_widgetsCheckboxWidget2[\"default\"], commonProps);\n\t}\n\t\n\tif (false) {\n\t BooleanField.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t uiSchema: _react.PropTypes.object,\n\t onChange: _react.PropTypes.func.isRequired,\n\t formData: _react.PropTypes.bool,\n\t required: _react.PropTypes.bool\n\t };\n\t}\n\t\n\tBooleanField.defaultProps = {\n\t uiSchema: {}\n\t};\n\t\n\texports[\"default\"] = BooleanField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 23 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _widgetsWrapper = __webpack_require__(15);\n\t\n\tvar _widgetsWrapper2 = _interopRequireDefault(_widgetsWrapper);\n\t\n\tfunction CheckboxWidget(_ref) {\n\t var type = _ref.type;\n\t var onChange = _ref.onChange;\n\t var label = _ref.label;\n\t var defaultValue = _ref.defaultValue;\n\t var value = _ref.value;\n\t var required = _ref.required;\n\t var placeholder = _ref.placeholder;\n\t\n\t return _react2[\"default\"].createElement(\n\t _widgetsWrapper2[\"default\"],\n\t { label: label, required: required, type: type },\n\t _react2[\"default\"].createElement(\"input\", { type: \"checkbox\",\n\t title: placeholder,\n\t checked: value,\n\t defaultChecked: defaultValue,\n\t required: required,\n\t onChange: function (event) {\n\t return onChange(event.target.checked);\n\t } })\n\t );\n\t}\n\tif (false) {\n\t CheckboxWidget.propTypes = {\n\t type: _react.PropTypes.string.isRequired,\n\t onChange: _react.PropTypes.func,\n\t label: _react.PropTypes.string,\n\t defaultValue: _react.PropTypes.bool,\n\t value: _react.PropTypes.bool,\n\t required: _react.PropTypes.bool,\n\t placeholder: _react.PropTypes.string\n\t };\n\t}\n\t\n\texports[\"default\"] = CheckboxWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 24 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _utils = __webpack_require__(13);\n\t\n\tvar _SchemaField = __webpack_require__(18);\n\t\n\tvar _SchemaField2 = _interopRequireDefault(_SchemaField);\n\t\n\tvar ObjectField = (function (_Component) {\n\t _inherits(ObjectField, _Component);\n\t\n\t _createClass(ObjectField, null, [{\n\t key: \"defaultProps\",\n\t value: {\n\t uiSchema: {}\n\t },\n\t enumerable: true\n\t }]);\n\t\n\t function ObjectField(props) {\n\t _classCallCheck(this, ObjectField);\n\t\n\t _get(Object.getPrototypeOf(ObjectField.prototype), \"constructor\", this).call(this, props);\n\t this.state = this.getStateFromProps(props);\n\t }\n\t\n\t _createClass(ObjectField, [{\n\t key: \"componentWillReceiveProps\",\n\t value: function componentWillReceiveProps(nextProps) {\n\t this.setState(this.getStateFromProps(nextProps));\n\t }\n\t }, {\n\t key: \"getStateFromProps\",\n\t value: function getStateFromProps(props) {\n\t return props.formData || (0, _utils.getDefaultFormState)(props.schema) || {};\n\t }\n\t }, {\n\t key: \"isRequired\",\n\t value: function isRequired(name) {\n\t var schema = this.props.schema;\n\t return Array.isArray(schema.required) && schema.required.indexOf(name) !== -1;\n\t }\n\t }, {\n\t key: \"asyncSetState\",\n\t value: function asyncSetState(state) {\n\t var _this = this;\n\t\n\t // ensure state is propagated to parent component when it's actually set\n\t this.setState(state, function (_) {\n\t return _this.props.onChange(_this.state);\n\t });\n\t }\n\t }, {\n\t key: \"onChange\",\n\t value: function onChange(name, value) {\n\t this.asyncSetState(_defineProperty({}, name, value));\n\t }\n\t }, {\n\t key: \"render\",\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _props = this.props;\n\t var schema = _props.schema;\n\t var uiSchema = _props.uiSchema;\n\t\n\t return _react2[\"default\"].createElement(\n\t \"fieldset\",\n\t null,\n\t _react2[\"default\"].createElement(\n\t \"legend\",\n\t null,\n\t schema.title || \"Object\"\n\t ),\n\t Object.keys(schema.properties).map(function (name, index) {\n\t return _react2[\"default\"].createElement(_SchemaField2[\"default\"], { key: index,\n\t name: name,\n\t required: _this2.isRequired(name),\n\t schema: schema.properties[name],\n\t uiSchema: uiSchema[name],\n\t formData: _this2.state[name],\n\t onChange: _this2.onChange.bind(_this2, name) });\n\t })\n\t );\n\t }\n\t }]);\n\t\n\t return ObjectField;\n\t})(_react.Component);\n\t\n\tif (false) {\n\t ObjectField.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t uiSchema: _react.PropTypes.object,\n\t onChange: _react.PropTypes.func.isRequired,\n\t formData: _react.PropTypes.object,\n\t required: _react.PropTypes.bool\n\t };\n\t}\n\t\n\texports[\"default\"] = ObjectField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 25 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports[\"default\"] = UnsupportedField;\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction UnsupportedField(_ref) {\n\t var schema = _ref.schema;\n\t\n\t // XXX render json as string so dev can inspect faulty subschema\n\t return _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"unsupported-field\" },\n\t \"Unsupported field schema \",\n\t JSON.stringify(schema, null, 2),\n\t \".\"\n\t );\n\t}\n\t\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 26 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports[\"default\"] = ErrorList;\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction ErrorList(_ref) {\n\t var errors = _ref.errors;\n\t\n\t return _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"errors\" },\n\t _react2[\"default\"].createElement(\n\t \"h2\",\n\t null,\n\t \"Errors\"\n\t ),\n\t _react2[\"default\"].createElement(\n\t \"ul\",\n\t null,\n\t errors.map(function (error, i) {\n\t return _react2[\"default\"].createElement(\n\t \"li\",\n\t { key: i },\n\t error.stack\n\t );\n\t })\n\t )\n\t );\n\t}\n\t\n\tmodule.exports = exports[\"default\"];\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** react-jsonschema-form-0.4.1.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 97a5ad5ef6bd830ea0e8\n **/","import Form from \"./components/Form\";\n\nexport default Form;\n\n\n\n/** WEBPACK FOOTER **\n ** ./index.js\n **/","import React, { Component, PropTypes } from \"react\";\nimport { Validator } from \"jsonschema\";\n\nimport { getDefaultFormState } from \"../utils\";\nimport SchemaField from \"./fields/SchemaField\";\nimport ErrorList from \"./ErrorList\";\n\n\nexport default class Form extends Component {\n static defaultProps = {\n uiSchema: {}\n }\n\n constructor(props) {\n super(props);\n this.state = this.getStateFromProps(props);\n }\n\n componentWillReceiveProps(nextProps) {\n this.setState(this.getStateFromProps(nextProps));\n }\n\n getStateFromProps(props) {\n const edit = !!props.formData;\n const formData = props.formData || getDefaultFormState(props.schema) || null;\n return {\n status: \"initial\",\n formData,\n edit,\n errors: edit ? this.validate(formData) : []\n };\n }\n\n validate(formData) {\n const validator = new Validator();\n return validator.validate(formData, this.props.schema).errors;\n }\n\n renderErrors() {\n const {status, errors} = this.state;\n if (status !== \"editing\" && errors.length) {\n return ;\n }\n return null;\n }\n\n onChange(formData, options={validate: true}) {\n this.setState({\n status: \"editing\",\n formData,\n errors: options.validate ? this.validate(formData) : this.state.errors\n }, _ => {\n if (this.props.onChange) {\n this.props.onChange(this.state);\n }\n });\n }\n\n onSubmit(event) {\n event.preventDefault();\n this.setState({status: \"submitted\"});\n const errors = this.validate(this.state.formData);\n if (Object.keys(errors).length > 0) {\n this.setState({errors}, _ => {\n if (this.props.onError) {\n this.props.onError(errors);\n } else {\n console.error(\"Form validation failed\", errors);\n }\n });\n return;\n } else if (this.props.onSubmit) {\n this.props.onSubmit(this.state);\n }\n this.setState({status: \"initial\"});\n }\n\n render() {\n const {schema, uiSchema} = this.props;\n const {formData} = this.state;\n return (\n \n );\n }\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n Form.propTypes = {\n schema: PropTypes.object.isRequired,\n uiSchema: PropTypes.object,\n formData: PropTypes.any,\n onChange: PropTypes.func,\n onError: PropTypes.func,\n onSubmit: PropTypes.func,\n };\n}\n\nexport default Form;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/Form.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"React\",\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\"}\n ** module id = 2\n ** module chunks = 0\n **/","'use strict';\n\nvar Validator = module.exports.Validator = require('./validator');\n\nmodule.exports.ValidatorResult = require('./helpers').ValidatorResult;\nmodule.exports.ValidationError = require('./helpers').ValidationError;\nmodule.exports.SchemaError = require('./helpers').SchemaError;\n\nmodule.exports.validate = function (instance, schema, options) {\n var v = new Validator();\n return v.validate(instance, schema, options);\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jsonschema/lib/index.js\n **/","'use strict';\n\nvar urilib = require('url');\n\nvar attribute = require('./attribute');\nvar helpers = require('./helpers');\nvar ValidatorResult = helpers.ValidatorResult;\nvar SchemaError = helpers.SchemaError;\nvar SchemaContext = helpers.SchemaContext;\n\n/**\n * Creates a new Validator object\n * @name Validator\n * @constructor\n */\nvar Validator = function Validator () {\n this.schemas = {};\n this.unresolvedRefs = [];\n\n // Use Object.create to make this extensible without Validator instances stepping on each other's toes.\n this.types = Object.create(types);\n this.attributes = Object.create(attribute.validators);\n};\n\n// Hint at the presence of a property\nValidator.prototype.schemas = null;\nValidator.prototype.types = null;\nValidator.prototype.attributes = null;\nValidator.prototype.unresolvedRefs = null;\n\n/**\n * Adds a schema with a certain urn to the Validator instance.\n * @param schema\n * @param urn\n * @return {Object}\n */\nValidator.prototype.addSchema = function addSchema (schema, uri) {\n if (!schema) {\n return null;\n }\n var ourUri = uri || schema.id;\n this.addSubSchema(ourUri, schema);\n if (ourUri) {\n this.schemas[ourUri] = schema;\n }\n return this.schemas[ourUri];\n};\n\nValidator.prototype.addSubSchema = function addSubSchema(baseuri, schema) {\n if(!schema || typeof schema!='object') return;\n // Mark all referenced schemas so we can tell later which schemas are referred to, but never defined\n if(schema.$ref){\n var resolvedUri = urilib.resolve(baseuri, schema.$ref);\n // Only mark unknown schemas as unresolved\n if (this.schemas[resolvedUri] === undefined) {\n this.schemas[resolvedUri] = null;\n this.unresolvedRefs.push(resolvedUri);\n }\n return;\n }\n var ourUri = schema.id && urilib.resolve(baseuri, schema.id);\n var ourBase = ourUri || baseuri;\n if (ourUri) {\n if(this.schemas[ourUri]){\n if(!helpers.deepCompareStrict(this.schemas[ourUri], schema)){\n throw new Error('Schema <'+schema+'> already exists with different definition');\n }\n return this.schemas[ourUri];\n }\n this.schemas[ourUri] = schema;\n var documentUri = ourUri.replace(/^([^#]*)#$/, '$1');\n this.schemas[documentUri] = schema;\n }\n this.addSubSchemaArray(ourBase, ((schema.items instanceof Array)?schema.items:[schema.items]));\n this.addSubSchemaArray(ourBase, ((schema.extends instanceof Array)?schema.extends:[schema.extends]));\n this.addSubSchema(ourBase, schema.additionalItems);\n this.addSubSchemaObject(ourBase, schema.properties);\n this.addSubSchema(ourBase, schema.additionalProperties);\n this.addSubSchemaObject(ourBase, schema.definitions);\n this.addSubSchemaObject(ourBase, schema.patternProperties);\n this.addSubSchemaObject(ourBase, schema.dependencies);\n this.addSubSchemaArray(ourBase, schema.disallow);\n this.addSubSchemaArray(ourBase, schema.allOf);\n this.addSubSchemaArray(ourBase, schema.anyOf);\n this.addSubSchemaArray(ourBase, schema.oneOf);\n this.addSubSchema(ourBase, schema.not);\n return this.schemas[ourUri];\n};\n\nValidator.prototype.addSubSchemaArray = function addSubSchemaArray(baseuri, schemas) {\n if(!(schemas instanceof Array)) return;\n for(var i=0; i\", schema);\n }\n var subschema = helpers.objectGetPath(ctx.schemas[document], fragment.substr(1));\n if(subschema===undefined){\n throw new SchemaError(\"no such schema \" + fragment + \" located in <\" + document + \">\", schema);\n }\n return {subschema: subschema, switchSchema: switchSchema};\n};\n\n/**\n * Tests whether the instance if of a certain type.\n * @private\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @param type\n * @return {boolean}\n */\nValidator.prototype.testType = function validateType (instance, schema, options, ctx, type) {\n if (typeof this.types[type] == 'function') {\n return this.types[type].call(this, instance);\n }\n if (type && typeof type == 'object') {\n var res = this.validateSchema(instance, type, options, ctx);\n return res === undefined || !(res && res.errors.length);\n }\n // Undefined or properties not on the list are acceptable, same as not being defined\n return true;\n};\n\nvar types = Validator.prototype.types = {};\ntypes.string = function testString (instance) {\n return typeof instance == 'string';\n};\ntypes.number = function testNumber (instance) {\n return typeof instance == 'number';\n};\ntypes.integer = function testInteger (instance) {\n return (typeof instance == 'number') && instance % 1 === 0;\n};\ntypes.boolean = function testBoolean (instance) {\n return typeof instance == 'boolean';\n};\ntypes.number = function testNumber (instance) {\n return typeof instance == 'number';\n};\ntypes.array = function testArray (instance) {\n return instance instanceof Array;\n};\ntypes['null'] = function testNull (instance) {\n return instance === null;\n};\ntypes.date = function testDate (instance) {\n return instance instanceof Date;\n};\ntypes.any = function testAny (instance) {\n return true;\n};\ntypes.object = function testObject (instance) {\n // TODO: fix this - see #15\n return instance && (typeof instance) === 'object' && !(instance instanceof Array) && !(instance instanceof Date);\n};\n\nmodule.exports = Validator;\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jsonschema/lib/validator.js\n **/","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar punycode = require('punycode');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a puny coded representation of \"domain\".\n // It only converts the part of the domain name that\n // has non ASCII characters. I.e. it dosent matter if\n // you call it with a domain that already is in ASCII.\n var domainArray = this.hostname.split('.');\n var newOut = [];\n for (var i = 0; i < domainArray.length; ++i) {\n var s = domainArray[i];\n newOut.push(s.match(/[^A-Za-z0-9_-]/) ?\n 'xn--' + punycode.encode(s) : s);\n }\n this.hostname = newOut.join('.');\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n Object.keys(this).forEach(function(k) {\n result[k] = this[k];\n }, this);\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n Object.keys(relative).forEach(function(k) {\n if (k !== 'protocol')\n result[k] = relative[k];\n });\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n Object.keys(relative).forEach(function(k) {\n result[k] = relative[k];\n });\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host) && (last === '.' || last === '..') ||\n last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last == '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n\nfunction isString(arg) {\n return typeof arg === \"string\";\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isNull(arg) {\n return arg === null;\n}\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/~/node-libs-browser/~/url/url.js\n **/","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/~/node-libs-browser/~/url/~/punycode/punycode.js\n **/","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/buildin/module.js\n **/","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/~/node-libs-browser/~/url/~/querystring/index.js\n **/","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/~/node-libs-browser/~/url/~/querystring/decode.js\n **/","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/~/node-libs-browser/~/url/~/querystring/encode.js\n **/","'use strict';\n\nvar helpers = require('./helpers');\n\n/** @type ValidatorResult */\nvar ValidatorResult = helpers.ValidatorResult;\n/** @type SchemaError */\nvar SchemaError = helpers.SchemaError;\n\nvar attribute = {};\n\nattribute.ignoreProperties = {\n // informative properties\n 'id': true,\n 'default': true,\n 'description': true,\n 'title': true,\n // arguments to other properties\n 'exclusiveMinimum': true,\n 'exclusiveMaximum': true,\n 'additionalItems': true,\n // special-handled properties\n '$schema': true,\n '$ref': true,\n 'extends': true\n};\n\n/**\n * @name validators\n */\nvar validators = attribute.validators = {};\n\n/**\n * Validates whether the instance if of a certain type\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.type = function validateType (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var types = (schema.type instanceof Array) ? schema.type : [schema.type];\n if (!types.some(this.testType.bind(this, instance, schema, options, ctx))) {\n var list = types.map(function (v) {\n return v.id && ('<' + v.id + '>') || (v+'');\n });\n result.addError({\n name: 'type',\n argument: list,\n message: \"is not of a type(s) \" + list,\n });\n }\n return result;\n};\n\nfunction testSchema(instance, options, ctx, schema){\n return this.validateSchema(instance, schema, options, ctx).valid;\n}\n\n/**\n * Validates whether the instance matches some of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.anyOf = function validateAnyOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(schema.anyOf instanceof Array)){\n throw new SchemaError(\"anyOf must be an array\");\n }\n if (!schema.anyOf.some(testSchema.bind(this, instance, options, ctx))) {\n var list = schema.anyOf.map(function (v, i) {\n return (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n result.addError({\n name: 'anyOf',\n argument: list,\n message: \"is not any of \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance matches every given schema\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.allOf = function validateAllOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!(schema.allOf instanceof Array)){\n throw new SchemaError(\"allOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var self = this;\n schema.allOf.forEach(function(v, i){\n var valid = self.validateSchema(instance, v, options, ctx);\n if(!valid.valid){\n var msg = (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n result.addError({\n name: 'allOf',\n argument: { id: msg, length: valid.errors.length, valid: valid },\n message: 'does not match allOf schema ' + msg + ' with ' + valid.errors.length + ' error[s]:',\n });\n result.importErrors(valid);\n }\n });\n return result;\n};\n\n/**\n * Validates whether the instance matches exactly one of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.oneOf = function validateOneOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!(schema.oneOf instanceof Array)){\n throw new SchemaError(\"oneOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var count = schema.oneOf.filter(testSchema.bind(this, instance, options, ctx)).length;\n var list = schema.oneOf.map(function (v, i) {\n return (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (count!==1) {\n result.addError({\n name: 'oneOf',\n argument: list,\n message: \"is not exactly one from \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates properties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.properties = function validateProperties (instance, schema, options, ctx) {\n if(instance === undefined || !(instance instanceof Object)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var properties = schema.properties || {};\n for (var property in properties) {\n var prop = (instance || undefined) && instance[property];\n var res = this.validateSchema(prop, properties[property], options, ctx.makeChild(properties[property], property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n return result;\n};\n\n/**\n * Test a specific property within in instance against the additionalProperties schema attribute\n * This ignores properties with definitions in the properties schema attribute, but no other attributes.\n * If too many more types of property-existance tests pop up they may need their own class of tests (like `type` has)\n * @private\n * @return {boolean}\n */\nfunction testAdditionalProperty (instance, schema, options, ctx, property, result) {\n if (schema.properties && schema.properties[property] !== undefined) {\n return;\n }\n if (schema.additionalProperties === false) {\n result.addError({\n name: 'additionalProperties',\n argument: property,\n message: \"additionalProperty \" + JSON.stringify(property) + \" exists in instance when not allowed\",\n });\n } else {\n var additionalProperties = schema.additionalProperties || {};\n var res = this.validateSchema(instance[property], additionalProperties, options, ctx.makeChild(additionalProperties, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n}\n\n/**\n * Validates patternProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.patternProperties = function validatePatternProperties (instance, schema, options, ctx) {\n if(instance === undefined) return;\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var patternProperties = schema.patternProperties || {};\n\n for (var property in instance) {\n var test = true;\n for (var pattern in patternProperties) {\n var expr = new RegExp(pattern);\n if (!expr.test(property)) {\n continue;\n }\n test = false;\n var res = this.validateSchema(instance[property], patternProperties[pattern], options, ctx.makeChild(patternProperties[pattern], property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n if (test) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n }\n\n return result;\n};\n\n/**\n * Validates additionalProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.additionalProperties = function validateAdditionalProperties (instance, schema, options, ctx) {\n if(instance === undefined) return;\n if(!this.types.object(instance)) return;\n // if patternProperties is defined then we'll test when that one is called instead\n if (schema.patternProperties) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in instance) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minProperties = function validateMinProperties (instance, schema, options, ctx) {\n if (!instance || typeof instance !== 'object') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length >= schema.minProperties)) {\n result.addError({\n name: 'minProperties',\n argument: schema.minProperties,\n message: \"does not meet minimum property length of \" + schema.minProperties,\n })\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxProperties = function validateMaxProperties (instance, schema, options, ctx) {\n if (!instance || typeof instance !== 'object') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length <= schema.maxProperties)) {\n result.addError({\n name: 'maxProperties',\n argument: schema.maxProperties,\n message: \"does not meet maximum property length of \" + schema.maxProperties,\n });\n }\n return result;\n};\n\n/**\n * Validates items when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.items = function validateItems (instance, schema, options, ctx) {\n if (!(instance instanceof Array)) {\n return null;\n }\n var self = this;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance === undefined || !schema.items) {\n return result;\n }\n instance.every(function (value, i) {\n var items = (schema.items instanceof Array) ? (schema.items[i] || schema.additionalItems) : schema.items;\n if (items === undefined) {\n return true;\n }\n if (items === false) {\n result.addError({\n name: 'items',\n message: \"additionalItems not permitted\",\n });\n return false;\n }\n var res = self.validateSchema(value, items, options, ctx.makeChild(items, i));\n if(res.instance !== result.instance[i]) result.instance[i] = res.instance;\n result.importErrors(res);\n return true;\n });\n return result;\n};\n\n/**\n * Validates minimum and exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minimum = function validateMinimum (instance, schema, options, ctx) {\n if (typeof instance !== 'number') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid = true;\n if (schema.exclusiveMinimum && schema.exclusiveMinimum === true) {\n valid = instance > schema.minimum;\n } else {\n valid = instance >= schema.minimum;\n }\n if (!valid) {\n result.addError({\n name: 'minimum',\n argument: schema.minimum,\n message: \"must have a minimum value of \" + schema.minimum,\n });\n }\n return result;\n};\n\n/**\n * Validates maximum and exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maximum = function validateMaximum (instance, schema, options, ctx) {\n if (typeof instance !== 'number') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid;\n if (schema.exclusiveMaximum && schema.exclusiveMaximum === true) {\n valid = instance < schema.maximum;\n } else {\n valid = instance <= schema.maximum;\n }\n if (!valid) {\n result.addError({\n name: 'maximum',\n argument: schema.maximum,\n message: \"must have a maximum value of \" + schema.maximum,\n });\n }\n return result;\n};\n\n/**\n * Validates divisibleBy when the type of the instance value is a number.\n * Of course, this is susceptible to floating point error since it compares the floating points\n * and not the JSON byte sequences to arbitrary precision.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.divisibleBy = function validateDivisibleBy (instance, schema, options, ctx) {\n if (typeof instance !== 'number') {\n return null;\n }\n\n if (schema.divisibleBy == 0) {\n throw new SchemaError(\"divisibleBy cannot be zero\");\n }\n\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance / schema.divisibleBy % 1) {\n result.addError({\n name: 'divisibleBy',\n argument: schema.divisibleBy,\n message: \"is not divisible by (multiple of) \" + JSON.stringify(schema.divisibleBy),\n });\n }\n return result;\n};\n\n/**\n * Validates divisibleBy when the type of the instance value is a number.\n * Of course, this is susceptible to floating point error since it compares the floating points\n * and not the JSON byte sequences to arbitrary precision.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.multipleOf = function validateMultipleOf (instance, schema, options, ctx) {\n if (typeof instance !== 'number') {\n return null;\n }\n\n if (schema.multipleOf == 0) {\n throw new SchemaError(\"multipleOf cannot be zero\");\n }\n\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance / schema.multipleOf % 1) {\n result.addError({\n name: 'multipleOf',\n argument: schema.multipleOf,\n message: \"is not a multiple of (divisible by) \" + JSON.stringify(schema.multipleOf),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is present.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.required = function validateRequired (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance === undefined && schema.required === true) {\n result.addError({\n name: 'required',\n message: \"is required\"\n });\n } else if (instance && typeof instance==='object' && Array.isArray(schema.required)) {\n schema.required.forEach(function(n){\n if(instance[n]===undefined){\n result.addError({\n name: 'required',\n argument: n,\n message: \"requires property \" + JSON.stringify(n),\n });\n }\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value matches the regular expression, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.pattern = function validatePattern (instance, schema, options, ctx) {\n if (typeof instance !== 'string') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!instance.match(schema.pattern)) {\n result.addError({\n name: 'pattern',\n argument: schema.pattern,\n message: \"does not match pattern \" + JSON.stringify(schema.pattern),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is of a certain defined format, when the instance value is a string.\n * The following format are supported:\n * - date-time\n * - date\n * - time\n * - ip-address\n * - ipv6\n * - uri\n * - color\n * - host-name\n * - alpha\n * - alpha-numeric\n * - utc-millisec\n * @param instance\n * @param schema\n * @param [options]\n * @param [ctx]\n * @return {String|null}\n */\nvalidators.format = function validateFormat (instance, schema, options, ctx) {\n if (!(typeof instance === 'string')) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!helpers.isFormat(instance, schema.format)) {\n result.addError({\n name: 'format',\n argument: schema.format,\n message: \"does not conform to the \" + JSON.stringify(schema.format) + \" format\",\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minLength = function validateMinLength (instance, schema, options, ctx) {\n if (!(typeof instance === 'string')) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length >= schema.minLength)) {\n result.addError({\n name: 'minLength',\n argument: schema.minLength,\n message: \"does not meet minimum length of \" + schema.minLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxLength = function validateMaxLength (instance, schema, options, ctx) {\n if (!(typeof instance === 'string')) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length <= schema.maxLength)) {\n result.addError({\n name: 'maxLength',\n argument: schema.maxLength,\n message: \"does not meet maximum length of \" + schema.maxLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains at least a minimum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minItems = function validateMinItems (instance, schema, options, ctx) {\n if (!(instance instanceof Array)) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length >= schema.minItems)) {\n result.addError({\n name: 'minItems',\n argument: schema.minItems,\n message: \"does not meet minimum length of \" + schema.minItems,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains no more than a maximum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxItems = function validateMaxItems (instance, schema, options, ctx) {\n if (!(instance instanceof Array)) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length <= schema.maxItems)) {\n result.addError({\n name: 'maxItems',\n argument: schema.maxItems,\n message: \"does not meet maximum length of \" + schema.maxItems,\n });\n }\n return result;\n};\n\n/**\n * Validates that every item in an instance array is unique, when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance instanceof Array)) {\n return result;\n }\n function testArrays (v, i, a) {\n for (var j = i + 1; j < a.length; j++) if (helpers.deepCompareStrict(v, a[j])) {\n return false;\n }\n return true;\n }\n if (!instance.every(testArrays)) {\n result.addError({\n name: 'uniqueItems',\n message: \"contains duplicate item\",\n });\n }\n return result;\n};\n\n/**\n * Deep compares arrays for duplicates\n * @param v\n * @param i\n * @param a\n * @private\n * @return {boolean}\n */\nfunction testArrays (v, i, a) {\n var j, len = a.length;\n for (j = i + 1, len; j < len; j++) {\n if (helpers.deepCompareStrict(v, a[j])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Validates whether there are no duplicates, when the instance is an Array.\n * @param instance\n * @return {String|null}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n if (!(instance instanceof Array)) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!instance.every(testArrays)) {\n result.addError({\n name: 'uniqueItems',\n message: \"contains duplicate item\",\n });\n }\n return result;\n};\n\n/**\n * Validate for the presence of dependency properties, if the instance is an object.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.dependencies = function validateDependencies (instance, schema, options, ctx) {\n if (!instance || typeof instance != 'object') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in schema.dependencies) {\n if (instance[property] === undefined) {\n continue;\n }\n var dep = schema.dependencies[property];\n var childContext = ctx.makeChild(dep, property);\n if (typeof dep == 'string') {\n dep = [dep];\n }\n if (dep instanceof Array) {\n dep.forEach(function (prop) {\n if (instance[prop] === undefined) {\n result.addError({\n // FIXME there's two different \"dependencies\" errors here with slightly different outputs\n // Can we make these the same? Or should we create different error types?\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"property \" + prop + \" not found, required by \" + childContext.propertyPath,\n });\n }\n });\n } else {\n var res = this.validateSchema(instance, dep, options, childContext);\n if(result.instance !== res.instance) result.instance = res.instance;\n if (res && res.errors.length) {\n result.addError({\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"does not meet dependency required by \" + childContext.propertyPath,\n });\n result.importErrors(res);\n }\n }\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is one of the enumerated values.\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['enum'] = function validateEnum (instance, schema, options, ctx) {\n if (!(schema['enum'] instanceof Array)) {\n throw new SchemaError(\"enum expects an array\", schema);\n }\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!schema['enum'].some(helpers.deepCompareStrict.bind(null, instance))) {\n result.addError({\n name: 'enum',\n argument: schema['enum'],\n message: \"is not one of enum values: \" + schema['enum'].join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance if of a prohibited type.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.not = validators.disallow = function validateNot (instance, schema, options, ctx) {\n var self = this;\n if(instance===undefined) return null;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var notTypes = schema.not || schema.disallow;\n if(!notTypes) return null;\n if(!(notTypes instanceof Array)) notTypes=[notTypes];\n notTypes.forEach(function (type) {\n if (self.testType(instance, schema, options, ctx, type)) {\n var schemaId = type && type.id && ('<' + type.id + '>') || type;\n result.addError({\n name: 'not',\n argument: schemaId,\n message: \"is of prohibited type \" + schemaId,\n });\n }\n });\n return result;\n};\n\nmodule.exports = attribute;\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jsonschema/lib/attribute.js\n **/","'use strict';\n\nvar uri = require('url');\n\nvar ValidationError = exports.ValidationError = function ValidationError (message, instance, schema, propertyPath, name, argument) {\n if (propertyPath) {\n this.property = propertyPath;\n }\n if (message) {\n this.message = message;\n }\n if (schema) {\n if (schema.id) {\n this.schema = schema.id;\n } else {\n this.schema = schema;\n }\n }\n if (instance) {\n this.instance = instance;\n }\n this.name = name;\n this.argument = argument;\n this.stack = this.toString();\n};\n\nValidationError.prototype.toString = function toString() {\n return this.property + ' ' + this.message;\n};\n\nvar ValidatorResult = exports.ValidatorResult = function ValidatorResult(instance, schema, options, ctx) {\n this.instance = instance;\n this.schema = schema;\n this.propertyPath = ctx.propertyPath;\n this.errors = [];\n this.throwError = options && options.throwError;\n};\n\nValidatorResult.prototype.addError = function addError(detail) {\n var err;\n if (typeof detail == 'string') {\n err = new ValidationError(detail, this.instance, this.schema, this.propertyPath);\n } else {\n if (!detail) throw new Error('Missing error detail');\n if (!detail.message) throw new Error('Missing error message');\n if (!detail.name) throw new Error('Missing validator type');\n err = new ValidationError(detail.message, this.instance, this.schema, this.propertyPath, detail.name, detail.argument);\n }\n\n if (this.throwError) {\n throw err;\n }\n this.errors.push(err);\n return err;\n};\n\nValidatorResult.prototype.importErrors = function importErrors(res) {\n if (typeof res == 'string' || (res && res.validatorType)) {\n this.addError(res);\n } else if (res && res.errors) {\n var errs = this.errors;\n res.errors.forEach(function (v) {\n errs.push(v);\n });\n }\n};\n\nValidatorResult.prototype.toString = function toString(res) {\n return this.errors.map(function(v,i){ return i+': '+v.toString()+'\\n'; }).join('');\n};\n\nObject.defineProperty(ValidatorResult.prototype, \"valid\", { get: function() {\n return !this.errors.length;\n} });\n\n/**\n * Describes a problem with a Schema which prevents validation of an instance\n * @name SchemaError\n * @constructor\n */\nvar SchemaError = exports.SchemaError = function SchemaError (msg, schema) {\n this.message = msg;\n this.schema = schema;\n Error.call(this, msg);\n Error.captureStackTrace(this, SchemaError);\n};\nSchemaError.prototype = Object.create(Error.prototype,\n { constructor: {value: SchemaError, enumerable: false}\n , name: {value: 'SchemaError', enumerable: false}\n });\n\nvar SchemaContext = exports.SchemaContext = function SchemaContext (schema, options, propertyPath, base, schemas) {\n this.schema = schema;\n this.options = options;\n this.propertyPath = propertyPath;\n this.base = base;\n this.schemas = schemas;\n};\n\nSchemaContext.prototype.resolve = function resolve (target) {\n return uri.resolve(this.base, target);\n};\n\nSchemaContext.prototype.makeChild = function makeChild(schema, propertyName){\n var propertyPath = (propertyName===undefined) ? this.propertyPath : this.propertyPath+makeSuffix(propertyName);\n var base = uri.resolve(this.base, schema.id||'');\n var ctx = new SchemaContext(schema, this.options, propertyPath, base, Object.create(this.schemas));\n if(schema.id && !ctx.schemas[base]){\n ctx.schemas[base] = schema;\n }\n return ctx;\n}\n\nvar FORMAT_REGEXPS = exports.FORMAT_REGEXPS = {\n 'date-time': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}[tT ]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([zZ]|[+-]\\d{2}:\\d{2})$/,\n 'date': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}$/,\n 'time': /^\\d{2}:\\d{2}:\\d{2}$/,\n\n 'email': /^(?:[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+\\.)*[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$/,\n 'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n 'ipv6': /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/,\n 'uri': /^[a-zA-Z][a-zA-Z0-9+-.]*:[^\\s]*$/,\n\n 'color': /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/,\n\n // hostname regex from: http://stackoverflow.com/a/1420225/5628\n 'hostname': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n 'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\n 'alpha': /^[a-zA-Z]+$/,\n 'alphanumeric': /^[a-zA-Z0-9]+$/,\n 'utc-millisec': function (input) {\n return (typeof input === 'string') && parseFloat(input) === parseInt(input, 10) && !isNaN(input);\n },\n 'regex': function (input) {\n var result = true;\n try {\n new RegExp(input);\n } catch (e) {\n result = false;\n }\n return result;\n },\n 'style': /\\s*(.+?):\\s*([^;]+);?/g,\n 'phone': /^\\+(?:[0-9] ?){6,14}[0-9]$/\n};\n\nFORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.pattern = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.ipv4 = FORMAT_REGEXPS['ip-address'];\n\nexports.isFormat = function isFormat (input, format) {\n if (FORMAT_REGEXPS[format] !== undefined) {\n if (FORMAT_REGEXPS[format] instanceof RegExp) {\n return FORMAT_REGEXPS[format].test(input);\n }\n if (typeof FORMAT_REGEXPS[format] === 'function') {\n return FORMAT_REGEXPS[format](input);\n }\n }\n return false;\n};\n\nvar makeSuffix = exports.makeSuffix = function makeSuffix (key) {\n key = key.toString();\n // This function could be capable of outputting valid a ECMAScript string, but the\n // resulting code for testing which form to use would be tens of thousands of characters long\n // That means this will use the name form for some illegal forms\n if (!key.match(/[.\\s\\[\\]]/) && !key.match(/^[\\d]/)) {\n return '.' + key;\n }\n if (key.match(/^\\d+$/)) {\n return '[' + key + ']';\n }\n return '[' + JSON.stringify(key) + ']';\n};\n\nexports.deepCompareStrict = function deepCompareStrict (a, b) {\n if (typeof a !== typeof b) {\n return false;\n }\n if (a instanceof Array) {\n if (!(b instanceof Array)) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n return a.every(function (v, i) {\n return deepCompareStrict(a[i], b[i]);\n });\n }\n if (typeof a === 'object') {\n if (!a || !b) {\n return a === b;\n }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(function (v) {\n return deepCompareStrict(a[v], b[v]);\n });\n }\n return a === b;\n};\n\nmodule.exports.deepMerge = function deepMerge (target, src) {\n var array = Array.isArray(src);\n var dst = array && [] || {};\n\n if (array) {\n target = target || [];\n dst = dst.concat(target);\n src.forEach(function (e, i) {\n if (typeof e === 'object') {\n dst[i] = deepMerge(target[i], e)\n } else {\n if (target.indexOf(e) === -1) {\n dst.push(e)\n }\n }\n });\n } else {\n if (target && typeof target === 'object') {\n Object.keys(target).forEach(function (key) {\n dst[key] = target[key];\n });\n }\n Object.keys(src).forEach(function (key) {\n if (typeof src[key] !== 'object' || !src[key]) {\n dst[key] = src[key];\n }\n else {\n if (!target[key]) {\n dst[key] = src[key];\n } else {\n dst[key] = deepMerge(target[key], src[key])\n }\n }\n });\n }\n\n return dst;\n};\n\n/**\n * Validates instance against the provided schema\n * Implements URI+JSON Pointer encoding, e.g. \"%7e\"=\"~0\"=>\"~\", \"~1\"=\"%2f\"=>\"/\"\n * @param o\n * @param s The path to walk o along\n * @return any\n */\nexports.objectGetPath = function objectGetPath(o, s) {\n var parts = s.split('/').slice(1);\n var k;\n while (typeof (k=parts.shift()) == 'string') {\n var n = decodeURIComponent(k.replace(/~0/,'~').replace(/~1/g,'/'));\n if (!(n in o)) return;\n o = o[n];\n }\n return o;\n};\n\n/**\n * Accept an Array of property names and return a JSON Pointer URI fragment\n * @param Array a\n * @return {String}\n */\nexports.encodePath = function encodePointer(a){\n\t// ~ must be encoded explicitly because hacks\n\t// the slash is encoded by encodeURIComponent\n\treturn a.map(function(v){ return '/'+encodeURIComponent(v).replace(/~/g,'%7E'); }).join('');\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jsonschema/lib/helpers.js\n **/","import RadioWidget from \"./components/widgets/RadioWidget\";\nimport SelectWidget from \"./components/widgets/SelectWidget\";\nimport TextareaWidget from \"./components/widgets/TextareaWidget\";\n\n\nexport function defaultTypeValue(type) {\n switch (type) {\n case \"array\": return [];\n case \"boolean\": return false;\n case \"date-time\": return \"\";\n case \"number\": return 0;\n case \"object\": return {};\n case \"string\": return \"\";\n default: return undefined;\n }\n}\n\nexport function defaultFieldValue(formData, schema) {\n return formData === null ? defaultTypeValue(schema.type) : formData;\n}\n\nexport function getAlternativeWidget(name) {\n switch(name) {\n case \"radio\": return RadioWidget;\n case \"select\": return SelectWidget;\n case \"textarea\": return TextareaWidget;\n default: throw new Error(`No alternative widget for \"${name}\"`);\n }\n}\n\nexport function getDefaultFormState(schema) {\n if (typeof schema !== \"object\") {\n throw new Error(\"Invalid schema: \" + schema);\n }\n if (\"default\" in schema) {\n return schema.default;\n }\n if (schema.type === \"object\") {\n return Object.keys(schema.properties).reduce((acc, key) => {\n acc[key] = getDefaultFormState(schema.properties[key]);\n return acc;\n }, {});\n }\n return defaultTypeValue(schema.type);\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./utils.js\n **/","import React, { PropTypes } from \"react\";\n\nimport Wrapper from \"./../widgets/Wrapper\";\n\n\nfunction RadioWidget({\n type,\n options,\n label,\n placeholder,\n value,\n defaultValue,\n required,\n onChange\n}) {\n // Generating a unique field name to identify this set of radio buttons\n const name = Math.random().toString();\n return (\n \n {\n options.map((option, i) => {\n const checked = value !== undefined ? option === value :\n option === defaultValue;\n return (\n